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

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

相关推荐
硅的褶皱1 小时前
对比分析LinkedBlockingQueue和SynchronousQueue
java·并发编程
MoFe11 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
季鸢2 小时前
Java设计模式之观察者模式详解
java·观察者模式·设计模式
Fanxt_Ja2 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
Mr Aokey2 小时前
Spring MVC参数绑定终极手册:单&多参/对象/集合/JSON/文件上传精讲
java·后端·spring
小马爱记录3 小时前
sentinel规则持久化
java·spring cloud·sentinel
长勺4 小时前
Spring中@Primary注解的作用与使用
java·后端·spring
紫乾20144 小时前
idea json生成实体类
java·json·intellij-idea
wh_xia_jun4 小时前
在 Spring Boot 中使用 JSP
java·前端·spring boot
网安INF4 小时前
CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
java·web安全·网络安全·flink·漏洞