List使用addAll()方法报错

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

Exception in thread "main" java.lang.UnsupportedOperationException

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

下面是代码

java 复制代码
        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

相关推荐
CSharp精选营2 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假5 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠6 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦13 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
qq_3692243314 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
小小工匠14 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾14 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres82114 天前
算法复键——树状数组
数据结构·算法
阿米亚波14 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse14 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows