之前项目上,有使用Arrays.asList()
创建一个List集合,并在后续的操作中使用之前创建的List集合继续add()
添加元素。
List<String> list = Arrays.asList("one", "two", "three");
list.add("five");
运行项目却在list.add("five");
处报错:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
...
原因是,Arrays.asList()
生成的ArrayList
对象是Arrays
自己的内部类对象
这个ArrayList
继承AbstractList
AbstractList
的add()
方法默认直接抛出 UnsupportedOperationException()
异常
可以使用其他方式创建List集合对象
方法1:
List<String> list = new ArrayList<String>(Arrays.asList("a", "b"));
方法2:
List<String> list = Stream.of("str1", "str2").collect(Collectors.toList());