文章目录
- 概要
- 原因
- 小结
概要
最近在写一个需求的时候用到了这个方法生成一个 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);
}
}
结果就报错了:
原因
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);
}
}
如有错误,欢迎指出!!!