为什么会在 Kotlin 中发生这种情况:
val list: List<Int> = listOf(1, 2, 3)// Immutable list
if(list is MutableCollection<*>){// why this "if" condition is true?
println("is mutable")// this line is printed
(list as MutableCollection<Int>).add(4) // this results to java.lang.UnsupportedOperationException
}
list is MutableCollection
返回 true 表示 Kotlin 不可变集合对象实现MutableCollection
了接口,但它不会更改集合中的项目,而是抛出UnsupportedOperationException
这是真的吗?如果是,为什么不可变集合对象MutableCollection
在 Kotlin 中实现接口?
是不是因为 Kotlin 集合继承自 Java 集合和更改方法(添加、删除、...)已经存在,避免更改集合的唯一方法是覆盖它并抛出异常(即使这是真的,它不是Kotlin 不可变集合对象实现MutableCollection
接口所必需的,因为 java 更改集合方法已经存在并且可以被覆盖)?