[英]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
?
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;
}
那么在运行时 , list
的类型将是MutableList
。
这是一个IDEA工具提示,它向您显示此列表可能是MutableList,List,例如Example
是Java类,并且可以返回任何类型的list。
同样,String也会发生同样的情况:由于列表是从Java返回的,因此您对列表的String可空性一无所知,因此String看起来像String!
意思是“可能为空,但可能不会”,而不会影响编译(即,您可以在不进行空检查的情况下作为对其的调用方法,因为对空进行检查:不会出现警告)。
MutableList是kotlin中的界面。 要声明一个变量,我们需要使用如下类
val list2: ArrayList<String>
@约瑟夫·佐勒
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.