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

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

相关推荐
邂逅星河浪漫12 小时前
【机器学习】HanLP+Weka+Java=Random Forest算法模型
java·spring boot·机器学习·weka·random forest
yinke小琪13 小时前
分库分表后,主键 ID 如何优雅生成?
java·后端·面试
焯75913 小时前
若依微服务遇到的配置问题
java·mybatis·ruoyi
wuxuanok13 小时前
Spring Boot 全局异常处理问题分析与解决方案
java·spring boot·后端
SunnyDays101113 小时前
Java 攻克 PDF 表格数据提取:从棘手挑战到自动化实践
java·提取pdf表格·读取pdf表格数据·pdf表格转csv·导出pdf表格为csv
初学小白...13 小时前
泛型-泛型方法
java·开发语言
LQ深蹲不写BUG13 小时前
深挖三色标记算法的底层原理
java·算法
上官浩仁13 小时前
springboot knife4j 接口文档入门与实战
java·spring boot·spring
启山智软13 小时前
商城源码后端性能优化:JVM 参数调优与内存泄漏排查实战
java·电子商务·商城开发
wuk99814 小时前
在Spring MVC中使用查询字符串与参数
java·spring·mvc