list = Arrays.asList(str); list.add("3"); _addall java.lang">
当前位置:   article > 正文

java.lang.UnsupportedOperationException报错解决_addall java.lang.unsupportedoperationexception

addall java.lang.unsupportedoperationexception

实际项目中针对于数组转List操作中报java.lang.UnsupportedOperationException错误分析以及解决方案

Test错误案例,代码比较简洁,如下图

  1. public class TestDemo {
  2. public static void main(String[] args) {
  3. String [] str = {"1","2"};
  4. List<String> list = Arrays.asList(str);
  5. list.add("3");
  6. }
  7. }

数据str转List,List操作add、addAll、remove方法都会报java.lang.UnsupportedOperationException,为什么都会报相同的错呢,主要是因为内部类ArrayList并没有对相应方法进行重写操作,我们一步一步看源码来分析一下,首先我们进asList方法中,发现源码做的是调用内部类ArrayList的操作,如下图

private static class ArrayList<E> extends AbstractList<E>  implements RandomAccess, Serializable内部类也是继承了AbstractList,下面可以看一下AbstractList的源码如何写的

同样由于addAll是调用的add方法所以同样也会报相同的错误

解决方案

  1. public class TestDemo {
  2. public static void main(String[] args) {
  3. String [] str = {"1","2"};
  4. List<String> list = Arrays.asList(str);
  5. //aa.add("3");
  6. List<String> arryList = new ArrayList(list);
  7. arryList.add("3");
  8. }
  9. }

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号