發生java.lang.UnsupportedOperationException異常的原因

轉載自第一代碼:http://www.diyidaima.com/article/detail/msuvFekq

List list= Arrays.asList(reports);//reports是數組

在Android裏使用如上代碼進行數組轉化爲List,然後進行List的remove、add或clear等都會出現java.lang.UnsupportedOperationException異常:

java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:638)
at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75)
at java.util.AbstractList.removeRange(AbstractList.java:658)
at java.util.AbstractList.clear(AbstractList.java:466)

這是由於:

Arrays.asLisvt() 返回java.util.ArraysArrayListArrayListArrays ArrayList和ArrayList都是繼承AbstractList,remove,add等 metho在AbstractList中是默認throw UnsupportedOperationException而且不作任何操作。ArrayList override這些method來對list進行操作,但是Arrays$ArrayList沒有override remove(int),add(int)等,所以throw UnsupportedOperationException。

解決方法是使用Iterator,或者轉換爲ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);

發佈了29 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章