JAva異常java.lang.UnsupportedOperationException(回転)

1764 ワード

背景:集合クラスの操作時にjava異常java.lang.UnsupportedOperationExceptionを報告することがあります.これは、部分集合タイプが同じですが、一部のメソッドが欠けているか、サポートされていないためです.誤報になる特殊な状況は以下の通りです.
(1)Arrays.asList()を使用してaddを呼び出すことが多く,removeこれらのmethodでjava.lang.U n s p p p p o rtedOperationException異常が発生する.これは、
**Arrays.asLisvt()は、ArrayListではなくjava.util.Arrays$ArrayListを返します.両者の違いは、java.util.ArrayListとjava.util.Arrays$ArrayListの違いArray$ArrayListとArrayListは、いずれもAbstractListを継承し、remove,addなどのmethodは、AbstractListではデフォルトthrow UnsupportedOperationExceptionであり、何もしない.ArrayList overrideこれらのmethodはリストを操作するために使用されますが、Arrays$ArrayListにはoverride remove(int)、add(int)などはありませんので、throw UnsupportedOperationExceptionです.**
解決策:Arrays.asList()メソッドで生成したListにarrayListのパッケージを再作成(Arrays.asList()はarrayListに直接変換することはできませんが、強制タイプ変換もできません)し、生成したarrayListに対して操作を行います.
コードは次のとおりです.
File folder = new File(path);
List<String> filesList = Arrays.asList(folder.list());
ArrayList<String> filesArrayList = new ArrayList<String>(filesList);

(2)private List vacationcategorys = Collections.emptyList();その後remove,add等のmethodを実行すると、この異常が投げ出される.
解決策:
private List vacationcategorys = new ArrayList();

理由:
EmptyListこのセットには、対応するadd、removeなどの方法がない(ソースコードを見るとわかる)
転入先:java異常java.lang.U n s p p p o rtedOperationException