Kotlin(可变)列表

Kotlin (Mutable)List

如果您在 Kotlin 中访问 List<[Some Type]> 类型的 Java 值,您将获得 (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 的显示方式:

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

val list2: (Mutable)List<String>

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

这是什么(Mutable)List

这是一个 IDEA 工具提示,向您展示了此列表可能是 MutableList、List,因为 Example 是 Java class 并且它可以 return 任何列表类型。

此外,String 也是如此:您对列表的 String 可空性一无所知,因为它是 return 从 Java 编辑而来的,所以 String 看起来像 String! 的意思在不影响编译的情况下“可能为空,但也可能不是”(即,您可以在不进行空检查的情况下对其调用方法,因为在空检查时检查它:不会出现警告)。

MutableList 是 kotlin 中的一个接口。 要声明一个变量,我们需要使用 class 就像

    val list2: ArrayList<String>

@约瑟夫佐勒

Kotlin 中没有类型(Mutable)List

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

如果您这样实施 Example.getList()

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

然后在 运行 时间 您的 list 类型将是 MutableList.