当使用时.可变列表编译器的remove函数抛出异常.有其他选择吗



这在线程"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]

相关内容

  • 没有找到相关文章

最新更新