【错误记录】Arrays.asList 的坑

文章目录

概要

最近在写一个需求的时候用到了这个方法生成一个 List,接着再往里面添加数据的时候就报错了,比如下面的例子。

java 复制代码
public class Main {
    public static void main(String[] args) {
        List<Integer> res = Arrays.asList(1, 2, 3);
        res.add(4);
        System.out.println(res);
    }
}

结果就报错了:

原因

下面就来看下 Arrays.asList 的源码。

java 复制代码
public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

上面会创建一个 ArrayList,这个 ArrayList 不是我们经常用的那一个,而是 Arrays 里面的内部类,这个 List 不支持新增和修改方法,所以一旦用了 add 或者 remove, 就会报错。

小结

说实话,第一次遇到这个错都有点懵,是真没想到 ArrayList 是 Arrays 里面的一个子类,所以如果要通过集合来创建一个可修改的集合,还是直接 new 比较好吧。

java 复制代码
public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
        list.add(4);
        list.add(5);
        System.out.println(list);
    }
}

如有错误,欢迎指出!!!

相关推荐
哈哈很哈哈11 分钟前
Flink SlotSharingGroup 机制详解
java·大数据·flink
真的想不出名儿21 分钟前
springboot - 邮箱验证码登录
java·springboot·邮箱验证
the beard40 分钟前
JVM垃圾回收器深度解析:从Serial到G1,探索垃圾回收的艺术
java·jvm
大虾别跑40 分钟前
vc无法启动
java·开发语言
郭老二1 小时前
【JAVA】从入门到放弃-01-HelloWorld
java·开发语言
卷Java1 小时前
CSS模板语法修复总结
java·前端·css·数据库·微信小程序·uni-app·springboot
龙茶清欢1 小时前
7、revision 是 Maven 3.5+ 引入的现代版本管理机制
java·elasticsearch·maven
柯南二号1 小时前
【Java后端】《Spring Boot Starter 原理详解》博客
java·开发语言·spring boot
歪歪1001 小时前
如何在SQLite中实现事务处理?
java·开发语言·jvm·数据库·sql·sqlite
毕设源码-郭学长2 小时前
【开题答辩全过程】以 J2EE在电信行业的应用研究为例,包含答辩的问题和答案
java·java-ee