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 に答える