MST

星途 面试题库

面试题:Kotlin与Java互操作性之基础类型转换

在Kotlin与Java互操作时,Java的基本类型(如int、long等)和Kotlin的相应类型(如Int、Long等)是如何自动转换的?请举例说明。如果在Kotlin中调用一个Java方法,该方法返回一个int类型,Kotlin如何处理?
35.5万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试
  1. 自动转换原理
    • 在Kotlin与Java互操作时,Java的基本类型和Kotlin的相应类型会根据上下文自动转换。Kotlin的类型系统区分可空和不可空类型,而Java基本类型是不可空的。在Java到Kotlin的方向上,Java基本类型会自动适配Kotlin的对应不可空类型。在Kotlin到Java的方向上,Kotlin不可空类型会转换为Java基本类型,Kotlin可空类型会转换为Java包装类型。
  2. 举例说明
    • Java到Kotlin
      • 假设有一个Java类JavaClass
public class JavaClass {
    public int getIntValue() {
        return 10;
    }
}
 - 在Kotlin中调用这个方法:
val javaObj = JavaClass()
val result: Int = javaObj.getIntValue()//这里Java的int类型自动转换为Kotlin的Int类型
  • Kotlin到Java
    • 假设有一个Kotlin函数getKotlinInt
fun getKotlinInt(): Int {
    return 20
}
 - 在Java中调用这个Kotlin函数(假设Kotlin代码已编译成Java可调用的形式):
int value = KotlinClass.getKotlinInt();//这里Kotlin的Int类型自动转换为Java的int类型
  1. Kotlin调用Java返回int类型的处理
    • 当在Kotlin中调用一个Java方法返回int类型时,Kotlin会自动将其转换为Int类型。例如上述JavaClass中的getIntValue方法返回int,在Kotlin中调用时直接用Int类型接收,如val result: Int = javaObj.getIntValue() 。如果Java方法返回的int可能为null(实际Java基本类型不能为null,但如果是包装类型Integer且可能为null的情况),Kotlin会将其转换为可空的Int?类型。例如,如果有一个Java方法public Integer getNullableInt(),在Kotlin中调用时:
val javaObj = JavaClass()
val nullableResult: Int? = javaObj.getNullableInt()