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

相关推荐
Chester_19997 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
YCOSA20259 小时前
雨晨 Windows 11 IoT 企业版 LTSC 26H2 轻装 26300.9278 自用版
windows·物联网
丈剑走天涯11 小时前
基于 Python 3 语法的 PyCharm 练习示例,涵盖列表操作、类型判断及数据清洗等核心知识点
windows·python·pycharm
AxureMost11 小时前
Dopamine 3.0.10 音乐播放器
windows
MayZork11 小时前
Windows 与 Linux 下 vcpkg 的安装部署指南
linux·运维·windows
Source.Liu12 小时前
【Dioxus】Windows 环境下 Rust + Dioxus 安装配置笔记
windows·rust·dioxus
专注仿真12 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
落魄大学生之流水线上谋生计12 小时前
LangGraph 基本用法指南
java·windows·python·langchain
间歇性努力持续性发呆的野生快乐选手13 小时前
高级数据结构:树状数组
数据结构
sukalot14 小时前
windows 驱动实例分析系列: libusb驱动分析-应用层源码篇(三)
windows·驱动开发