List使用addAll()方法报错

当使用Arrays.asList方式创建出来的list,在使用addAll方法的时候报错如下:

Exception in thread "main" java.lang.UnsupportedOperationException

这个问题记录下,以防以后忘记。

下面是代码

        List<String> objects = new ArrayList<>();
        objects.add("cc");
        objects.add("dd");

        List<String> list = Arrays.asList("aa", "bb");
        list.addAll(objects);

从代码上来看,这个方法应该是没有问题的,可是使用addAll缺报错了,看了下源码

这么看没错啊,new了一个ArrayList<>返回了,但是点开以后发现,这特么

创建的并不是ArrayList,而是Arrays的一个内部类,这个内部类实现了AbstractList,也里数据List系列的,但是有个问题,调用addAll的方法的时候,发现Arrays的内部类并没有重写addAll方法,所以直接就调用了父类中的addAll方法,AbstractList类中也没有符合条件的方法,只能继续调用父类的方法,AbstractCollection这个类中有符合条件的方法

这样就调用了add方法

特么的这个方法返回了一个异常,这就是为啥在Arrays.asList得到的List不能使用addAll的原因,怎么解决呢

经过苦思冥想,用了很多工具很多转换,最终选择了一个终极的解决方式

是的,你没有看错,就是在外面套一个new ArrayList

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值