- 自动转换原理:
- 在Kotlin与Java互操作时,Java的基本类型和Kotlin的相应类型会根据上下文自动转换。Kotlin的类型系统区分可空和不可空类型,而Java基本类型是不可空的。在Java到Kotlin的方向上,Java基本类型会自动适配Kotlin的对应不可空类型。在Kotlin到Java的方向上,Kotlin不可空类型会转换为Java基本类型,Kotlin可空类型会转换为Java包装类型。
- 举例说明:
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类型
- 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()