Arrays.asList()方法的大坑

踩坑

今天在开发过程中使用Arrays.asList()方法将数组转化为List,之后对List进行了remove操作,结果项目一直疯狂报错:class java.util.Arrays A r r a y L i s t c a n n o t b e c a s t t o c l a s s j a v a . u t i l . A r r a y L i s t ( j a v a . u t i l . A r r a y s ArrayList cannot be cast to class java.util.ArrayList (java.util.Arrays ArrayListcannotbecasttoclassjava.util.ArrayList(java.util.ArraysArrayList and java.util.ArrayList are in module java.base of loader 'bootstrap')


原因分析

Arrays.asList() 方法是 Java 中用于将数组转换为 List 的方法。但是Arrays.asList() 返回的 List 并不是 java.util.ArrayList 对象,而是 Arrays 类的内部类 ArrayList 的对象。

这个内部类 ArrayList 继承自 AbstractList,它是 Arrays 类的一个私有静态类。Arrays.ArrayList 类并没有实现一些 ArrayList 的修改操作,因此它的大小是固定的,并且不支持增删改操作。尝试在其上执行这些操作会抛出 UnsupportedOperationException。


解决方案

java 复制代码
// 使用ArrayList构造器创建一个新的ArrayList对象
List<String> list = new ArrayList<>(Arrays.asList(array));
相关推荐
百***68044 分钟前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
庸子9 分钟前
Kubernetes调度器深度解析:从资源分配到亲和性策略的架构师之路
java·算法·云原生·贪心算法·kubernetes·devops
_Jimmy_1 小时前
Nacos的三层缓存是什么
java·缓存
朝新_2 小时前
【实战】动态 SQL + 统一 Result + 登录校验:图书管理系统(下)
xml·java·数据库·sql·mybatis
百***92022 小时前
java进阶1——JVM
java·开发语言·jvm
迦蓝叶2 小时前
RDF 与 RDFS:知识图谱推理的基石
java·人工智能·数据挖掘·知识图谱·语义网·rdf·rdfs
百锦再2 小时前
选择Rust的理由:从内存管理到抛弃抽象
android·java·开发语言·后端·python·rust·go
yaoxin5211232 小时前
238. Java 集合 - 使用 ListIterator 遍历 List 元素
java·python·list
爱分享的Shawn_Salt2 小时前
IntelliJ IDEA初始化指南
java·ide·intellij-idea
Dxxyyyy2 小时前
零基础学JAVA--Day32(ArrayList底层+Vector+LinkedList)
java·开发语言