Kotlin(可变)列表

标签 kotlin kotlin-interop

如果您访问 List<[Some Type]> 类型的 Java 值在 Kotlin 中,您将得到类型 (Mutable)List<[Some Type]!>! .

例如:

Java代码:

public class Example {
    public static List<String> getList() {
        return Arrays.asList("A", "B", "C");
    }
}

Kotlin 代码:

val list = Example.getList()
// list is of type (Mutable)List<String!>!

这是 IntelliJ 如何显示它的:

IntelliJ type hint

但是,如果您想像这样创建自己的这种类型的变量:

val list2: (Mutable)List<String>

然后 IntelliJ 将正确突出显示类型,但会给出错误 Unexpected Tokens .

这是什么(Mutable)List

最佳答案

Kotlin 中没有类型 (Mutable)List

这表明 Example.getList() 返回的列表类型 不会在编译时决定,但会在运行时决定。
在您的情况下,它将是 List 而不是 MutableList 因为 Arrays.asList() 返回 FixedSizeList .

如果您像这样实现了Example.getList():

public static List<String> getList() {
    List<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("C");
    return list;
}

那么在运行时,您的列表的类型将是MutableList

关于Kotlin(可变)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54259737/

相关文章:

kotlin - 覆盖默认构造函数中定义的变量的 setter

java - 如何在 Kotlin 中实现这个 Java 接口(interface)?

android - 如何在 Kotlin 中设置一个带有复合可绘制对象的 TextView,它是一个 URL 图像,加载了 Glide?

android - 登录方法没有在android中使用数据绑定(bind)调用

android - Live Data Observer On 按钮 屏幕旋转时单击

Kotlin 与 Objective-C 框架的多平台/原生互操作性

javascript - String::toByteArray() 无法在 Kotlin [js] 中编译

android - 在 Kotlin 中按 ID 查找按钮

types - 如何在 Kotlin 中使用递归类型

java - 将 Kotlin 数组转换为 Java 可变参数