不正なコード
private List<String> mImgs;
mImgs = Arrays.asList(mOriginSImgs);
mImgs.remove(i);//这里报错
実行中の例外: java.lang.UnsupportedOperationException
この問題は次の理由で発生します。
1. テキスト クラスには 2 つのパッケージがあります: a、java.util.ArrayList パッケージ、b、java.util.Arrays.ArrayList パッケージ (強調)
2. Arrays.asList() によって生成された List の add メソッドと delete メソッドを呼び出すと例外が報告されますこれは、Arrays.asList() が java.util.ArrayList ではなく Arrays の内部クラス ArrayList を返すためです。
3. asList メソッドを使用して親クラスの追加と削除を継承すると、UnsupportedOperationException 例外がスローされるだけであり、java.util.ArrayList は親クラスの追加と削除を書き換えます。
4. したがって、ArrayList は add() メソッドを正しく使用する必要があります。
解決:
mImgs.addAll(Arrays.asList(mOriginSImgs));
要約:
この間違いは、私の教師が彼に共有したインタビューの質問から来ています。
知識ポイントは、asList メソッドによって継承された親クラスの追加と削除を使用することですが、これは UnsupportedOperationException 例外をスローするだけです。java.util.ArrayList は親クラスの追加と削除を書き換えるため、ArrayList を呼び出すには ArrayList が必要です。方法
参考: java.lang.UnsupportedOperationException_Gu の解決策 Wanning のブログ - CSDN ブログ