gpt4 book ai didi

java - listOf() 返回 MutableList

转载 作者:IT老高 更新时间:2023-10-28 13:36:03 26 4
gpt4 key购买 nike

在 Kotlin 中,使用 listOf() 创建的列表功能 (which should be immutable)通过对 MutableList 的类型检查使用 is运算符。

示例:

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

println(list is MutableList)
}

将打印

true

有趣的是,使用 listOf<String>() 创建了一个空列表将失败检查并打印 false 因为它返回单例对象 EmptyList .

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

最佳答案

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

关于java - listOf() 返回 MutableList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com