Java中数组转换集合list.add也会报错

集合

*1.list.add也会报错**

  public static void main(String[] args) {
        String[] demo ={"a","c","d"};
        List<String> list= Arrays.asList(demo);//数组转成集合
        list.add("e");
        System.out.println(list.size());
    }

报错

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at cn.ddserver.facelogin.demo1.main(demo1.java:11)

调用Arrays.asList()生产的List的add、remove方法时报异常,这是由Arrays.asList() 返回的是 Arrays的内部类ArrayList,

   public static <T> List<T> asList(T... a) { //工具类转换方法 
        return new ArrayList<>(a);
    }
//返回的是 Arrays里面一个 静态的类 
  private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable

而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重新了这些方法而Arrays的内部类ArrayList没有重新,所以会抛出异常。

站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
欧资源网 » Java中数组转换集合list.add也会报错

发表评论

提供最优质的资源集合

立即查看 了解详情
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡