概述
在日常coding中,我们经常会用到List类型的对象;
在初始化List时,Arrays.ArrayList可以直接带参构造,可以省一行代码,不过不清楚源码或特性也会造成一些异常情况;
区别
初始化
public static void main(String[] args) {
// java.util.ArrayList
List<String> list1 = new ArrayList<>();
list1.add("1");
// java.util.Arrays.ArrayList
List<String> list2 = Arrays.asList("1");
}
在上述情况中,乍看2个list是一样的,实际则略有不同
当调用list2.add("2")时,系统就会报错
Exception in thread "main" java.lang.UnsupportedOperationException
其原因是Arrays.ArrayList并没有实现AbstractList中的add方法;
同样,Arrays.ArrayList也没有实现AbstractList中的remove方法;
也可以认为,用Arrays.ArrayList初始化出来的对象,是一个定长的集合,并不支持添加元素;
所以在实际使用这2个类时,需要注意使用场景,若下游需要对该集合进行新增删减,就不能使用Arrays.ArrayList;
Arrays.ArrayList初始化List后,调用这个对象的add和remove方法并不会编译报错,只有在程序运行时才能发现问题,这里需要特别注意
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。