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

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

相关推荐
kobe_t3 分钟前
UML设计系列(9):开发过程中如何应用UML
java
芦屋花绘10 分钟前
Java的JUC详细全解
java·开发语言·jvm·spring boot·kafka
珠峰下的沙砾18 分钟前
如何将IDP映射属性添加,到accountToken中 方便项目获取登录人信息
java
lfwh25 分钟前
Java 实现单链表翻转(附详细注释)
java·开发语言·python
元亓亓亓1 小时前
java后端开发day35--集合进阶(四)--双列集合:Map&HashMap&TreeMap
java·开发语言
独立开阀者_FwtCoder2 小时前
狂收 33k+ star!全网精选的 MCP 一网打尽!!
java·前端·javascript
再路上12162 小时前
direct_visual_lidar_calibration iridescence库问题
java·服务器·数据库
兔子蟹子2 小时前
Java 实现SpringContextUtils工具类,手动获取Bean
java·开发语言
jackson凌3 小时前
【Java学习方法】终止循环的关键字
java·笔记·学习方法
种时光的人3 小时前
Java多线程的暗号密码:5分钟掌握wait/notify
java·开发语言