【错误记录】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);
    }
}

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

相关推荐
玩代码8 分钟前
Spring Boot2 静态资源、Rest映射、请求映射源码分析
java·spring boot·源码分析·spring boot2
小白的代码日记15 分钟前
Java经典笔试题
java·开发语言
sakoba28 分钟前
nginx学习
java·运维·学习·nginx·基础
经典19921 小时前
Spring Boot 遇上 MyBatis-Plus:高效开发的奇妙之旅
java·spring boot·mybatis
1.01^10001 小时前
# 四、String与其他数据类型的转换:
java
rzl021 小时前
SpringBoot(黑马)
java·spring boot·后端
玖疯子1 小时前
PyCharm高效入门指南大纲
java·运维·服务器·apache·wordpress
香饽饽~、1 小时前
[第十三篇] Spring Boot监控
java·spring boot·后端
shawya_void1 小时前
算法:数组part02: 209. 长度最小的子数组 + 59.螺旋矩阵II + 代码随想录补充58.区间和 + 44. 开发商购买土地
java
javadaydayup1 小时前
Java注解底层竟然是个Map?
java