小编Joe*_*ans的帖子

listOf()返回MutableList

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

例:

fun main(args: Array<String>) {
    val list = listOf("I'm immutable")

    println(list is MutableList)
}
Run Code Online (Sandbox Code Playgroud)

将打印

真正

有趣的是,使用的空列表listOf<String>()将使检查失败并在返回单例对象时打印falseEmptyList.

经过一番挖掘后,事实证明mutableListOf()创建一个java.util.ArrayListwhile会listOf()最终创建一个java.util.Arrays$ArrayList,但是没有一个类实现MutableList,所以为什么非空列表仍然通过类型检查呢?因此,有没有另一种方法可靠地检查列表是否可变,而不必检查它的实际实现(is ArrayList等)?

java kotlin

10
推荐指数
1
解决办法
737
查看次数

标签 统计

java ×1

kotlin ×1