List<String> list = Arrays.asList(new String[]{"a", "b"}); list.add("a");
执行结果
进行其他改变数组大小的操作,都会抛出这个异常 Exception in thread "main" java.lang.UnsupportedOperationException
查看aslist方法源码
首先看出,返回的ArrayList只是java.util.Arrays中的内部类,并不是java.util.ArrayList
而且内部类ArrayList继承了AbstractList,但是并没有重写add,remove等方法,所以调用这些方法的时候调用的都是父类AbstractList中的方法。
我们先看下平常使用的java.util包下的ArrayList中add方法
我们看下父类AbstractList中的这些方法
直接就会抛出异常
所以Arrays.asList()返回的list仅支持那些不会改变集合大小的操作。
如果要用的话,也可以如下使用:
List<String> list = new ArrayList<>(Arrays.asList(new String[]{"a", "b"})); list.add("c"); System.out.println(list);
把Arrays.asList()的结果作为构造器的参数传递给任何Collection。这样就可以正常操作了
结果如下: