这在线程"main"中给出异常:
java.lang.UnsupportedOperationException:删除
fun main(args: Array<String>) {
val list = listOf(0, 1, 2, 3, 4, 5, 6, 7, 8);
var record: MutableList<Int>;
record = list as MutableList<Int>;
record.remove(2);
print(record);
}
强制转换不会将对象更改为不同类型的对象。当您将list
分配给record
时,它仍然是只读的List
,但您已强制编译器将其视为MutableList
,因此它将在运行时而不是编译时失败。
由于您将list
实例化为只读List
,因此它受到保护,不会发生更改(至少其大小(。如果这不是您想要的,那么您应该首先将其实例化为MutableList
。或者,如果你只需要一份可以更改的副本,你可以使用toMutableList()
来获得一份。
您应该使用.toMutableList((将列表复制到一个新的可变列表中:
val list = listOf(0, 1, 2, 3, 4, 5, 6, 7, 8)
val record = list.toMutableList()
record.remove(2)
print(record)
该输出:
[0, 1, 3, 4, 5, 6, 7, 8]