3

可能重复:
为什么我在尝试从列表中删除时得到 UnsupportedOperationException?

当我调用 List.remove(index) 或 list.remove(element) 时,它会引发 java.lang.UnsupportedOperationException。唯一相关的错误代码是:

17:08:10 [SEVERE]       at java.util.AbstractList.remove(Unknown Source)

这是一个例子:

String line = "cmd /say This is a test";
String[] segments = line.split(" ");
String cmd = segments[0];
List rest = Arrays.asList(segments);
rest.remove(0); // This line raises the exception

有谁知道为什么会这样?在我的实际代码中,我检查了索引 0 处的元素要删除。

4

1 回答 1

13

来自Arrays.asList()的 JavaDoc:

返回由指定数组支持的固定大小的列表。(将返回的列表“写入”到数组的更改。)

所以代替固定大小的列表:

List rest = Arrays.asList(segments);

创建一个新的可变大小列表:

List<String> rest = new ArrayList<String>(Arrays.asList(segments));
于 2013-01-19T23:22:03.923 回答