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

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

相关推荐
蜗牛互联网20 分钟前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
SL_staff1 小时前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈
SunnyDays10111 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java·查找文字·word 文档·高亮文字·正则匹配查找·模糊查找
geats人山人海1 小时前
java 4继承
java·开发语言
众链网络2 小时前
Agent 的成本大头不在“写“,在“判断“:拆解专用决策模型的三层架构
java·开发语言·人工智能·微服务
周小董2 小时前
[1371]jdk管理工具
java·开发语言
青春逝如流水2 小时前
Java 中线程的创建方式:从基础到现代
java·开发语言·多线程·ai文章
Peregrine93 小时前
C++ - > 类和对象
java·c++·算法
2501_933923253 小时前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
Wang's Blog3 小时前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq