繁体   English   中英

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的显示方式:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM