为了账号安全,请及时绑定邮箱和手机立即绑定

listOf() 返回 MutableList

listOf() 返回 MutableList

鸿蒙传说 2021-10-20 14:38:26
在 Kotlin 中,使用listOf()函数创建的列表(应该是不可变的)通过MutableList使用is运算符的类型检查。例子:fun main(args: Array<String>) {    val list = listOf("I'm immutable")    println(list is MutableList)}将打印真的有趣的是,使用创建的空列表listOf<String>()将无法通过检查并打印false,因为它返回单例对象EmptyList。经过一番挖掘,结果是mutableListOf()创建一个java.util.ArrayListwhilelistOf()最终创建了一个java.util.Arrays$ArrayList,但没有一个类涉及到 implement MutableList,那么为什么非空列表仍然通过了类型检查呢?因此,是否有一种替代方法可以可靠地检查列表是否可变,而无需检查它的实际实现(is ArrayList等)?
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-10-20
  • 1 回答
  • 0 关注
  • 267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信