首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >listOf()返回MutableList

listOf()返回MutableList
EN

Stack Overflow用户
提问于 2018-09-30 17:04:42
回答 1查看 1.9K关注 0票数 11

在Kotlin中,使用listOf()函数(这应该是不可变的)创建的列表通过使用is运算符对MutableList进行类型检查。

示例:

代码语言:javascript
复制
fun main(args: Array<String>) {
    val list = listOf("I'm immutable")

    println(list is MutableList)
}

将打印

真的

有趣的是,使用listOf<String>()创建的空列表将失败,并在返回单例对象EmptyList时打印false

经过一番研究,结果发现mutableListOf()创建了一个java.util.ArrayList,而listOf()最终创建了一个java.util.Arrays$ArrayList,但是没有一个涉及到的类实现了MutableList,那么为什么一个非空列表仍然通过类型检查呢?因此,是否有另一种方法可以可靠地检查列表是否是可变的,而无需对照它的实际实现(is ArrayList等)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-01 12:35:05

ListMutableList之间的分离是Kotlin编译器创建的幻觉。在运行时,Kotlin使用Java集合类,它只有一个List接口,包含读取和突变方法。对ListMutableList的编译时引用都编译为java.util.List引用。因此,无法在运行时检测列表是否为MutableList

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52580173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档