在 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等)?
慕村225694
相关分类