发生java.lang.UnsupportedOperationException异常的原因
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$ArrayList, 而不是ArrayList。Arrays$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);
如果此博文帮助到你,麻烦点个赞哈!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。