MST

星途 面试题库

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

在Kotlin与Java相互调用过程中,Kotlin的`List`与Java的`ArrayList`如何相互转换?Kotlin的`String`与Java的`String`在互操作性中有哪些需要注意的地方?请详细阐述并给出代码示例。
11.4万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

Kotlin的List与Java的ArrayList相互转换

Kotlin的List转Java的ArrayList

在Kotlin中,List是只读接口,要转换为Java的ArrayList,可以使用ArrayList的构造函数。

import java.util.ArrayList

fun main() {
    val kotlinList: List<Int> = listOf(1, 2, 3)
    val javaArrayList = ArrayList(kotlinList)
    println(javaArrayList)
}

Java的ArrayList转Kotlin的List

Java的ArrayList可以直接赋值给Kotlin的List,因为Kotlin的List是只读接口,而ArrayList实现了List接口。

import java.util.ArrayList

fun main() {
    val javaArrayList = ArrayList<Int>()
    javaArrayList.add(1)
    javaArrayList.add(2)
    val kotlinList: List<Int> = javaArrayList
    println(kotlinList)
}

Kotlin的String与Java的String在互操作性中的注意事项

在Kotlin与Java相互调用时,Kotlin的String与Java的String是完全兼容的,因为Kotlin的String在底层就是Java的String

从Kotlin调用Java方法

当在Kotlin中调用Java方法并传递String参数时,直接传递Kotlin的String即可。

class JavaClass {
    public static void printString(String str) {
        System.out.println(str);
    }
}

fun main() {
    val kotlinString = "Hello from Kotlin"
    JavaClass.printString(kotlinString)
}

从Java调用Kotlin方法

当在Java中调用Kotlin方法并传递String参数时,直接传递Java的String即可。

fun printString(str: String) {
    println(str)
}
public class Main {
    public static void main(String[] args) {
        String javaString = "Hello from Java";
        MainKt.printString(javaString);
    }
}

需要注意的是,虽然二者在互操作性上很顺畅,但Kotlin对String提供了一些额外的扩展函数,在Java中调用Kotlin代码使用这些扩展函数时,需要使用Kt后缀的类名来调用。例如上述printString函数在Java中调用使用MainKt类名。