0

这在线程“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);
}
4

2 回答 2

2

转换不会将对象更改为不同类型的对象。当您分配list给 时record,它仍然是只读的List,但您已强制编译器将其视为 a MutableList,因此它将在运行时而不是编译时失败。

由于您将其实例list化为 read-only List,因此可以防止更改(至少对其大小)。如果这不是您想要的,您应该MutableList首先将其实例化为 a 。或者,如果您只需要一个可以更改的副本,您可以使用它toMutableList()来获取副本。

于 2020-05-07T14:49:59.963 回答
2

您应该使用.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]
于 2020-05-07T14:37:15.880 回答