Kotlin(可变)列表
如果在Kotlin中访问类型为Kotlin(可变)列表,kotlin,kotlin-interop,Kotlin,Kotlin Interop,如果在Kotlin中访问类型为List的Java值,您将获得类型为(可变)的列表 e、 g: Java代码: 公共类示例{ 公共静态列表getList(){ 返回数组。asList(“A”、“B”、“C”); } } 科特林代码: val list = Example.getList() // list is of type (Mutable)List<String!>! val list=Example.getList() //列表类型为(可变)列表! 以下是IntelliJ
List
的Java值,您将获得类型为(可变)的列表代码>
e、 g:
Java代码:
公共类示例{
公共静态列表getList(){
返回数组。asList(“A”、“B”、“C”);
}
}
科特林代码:
val list = Example.getList()
// list is of type (Mutable)List<String!>!
val list=Example.getList()
//列表类型为(可变)列表!
以下是IntelliJ的表现:
但是,如果您希望这样创建自己的此类变量:
val list2: (Mutable)List<String>
val列表2:(可变)列表
然后IntelliJ将正确地突出显示该类型,但会给出错误意外标记
这个(可变)列表是什么?这是一个理想的工具提示,它向您展示了这个列表可能是可变列表,也可能是列表,因为示例
是Java类,它可以返回任何类型的列表
同样,字符串也是如此:您不知道列表的字符串可空性,因为它是从Java返回的,所以字符串看起来像String代码>意思是“可能是空的,但也可能不是”,但不影响编译(即,您可以在不检查空值的情况下调用它的方法,也可以在检查空值时调用它:不会出现警告)。可变列表在kotlin中是一种干扰。
要声明一个变量,我们需要使用类,如
val list2: ArrayList<String>
val列表2:ArrayList
@Josef Zoller在Kotlin中没有类型(可变)列表
这表示Example.getList()
不会在编译时决定,但会在运行时决定
在您的情况下,它将是List
而不是MutableList
,因为Arrays.asList()
返回一个数组
如果您像这样实现了Example.getList()
:
public static List<String> getList() {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
return list;
}
公共静态列表getList(){
列表=新的ArrayList();
列表。添加(“A”);
列表。添加(“B”);
列表。添加(“C”);
退货清单;
}
然后在运行时,您的列表的类型将是MutableList
任意
用于调用没有为特定变量定义@Nullable或@NotNull的Java代码。这通常发生在Java代码中,因为它总是在Kotlin中定义的。这也意味着Kotlin不能抱怨空安全性,因为它不知道它是否为空。如果在运行时得到null,它仍将崩溃。val:list:MutableList
也是允许的。请参阅。