发生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.Arrays ArrayListArrayListArrays 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);

你可能感兴趣的:(Android那些事)