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
.
如果您在 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
.