关于 java.lang.UnsupportedOperationException 异常

来源:互联网 发布:赵子易扒皮知乎 编辑:程序博客网 时间:2024/05/18 12:05

关于 java.lang.UnsupportedOperationException异常
今天在项目中碰到一个List有异常,从Page对象中取出来一个list但是报了上面的这个异常,百度了一下结果发现了获取的list并不ArrayList 对象,而是 Arrays.asList(arr); 返回的对象。

出错原理:
这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。
Arrays$ArrayList和ArrayList都是继承AbstractList。remove、add等方法在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。

解决方案:将java.util.Arrays$ArrayList 转成 ArrayList。

String[] arr ={"a","b","c"};  List<String> list = Arrays.asList(arr);         //这是Arrays$ArrayList对象。List arrList = new ArrayList(list);             //转成 ArrayList对象。arrList.add("d");                               //测试方法。arrList.add("e");
0 0
原创粉丝点击