为什么Arrays.asList()返回的列表不能增加元素
| |
如果调用Arrays.asList()方法返回列表的add方法会抛出异常,这是什么原因呢?
在asList方法源码可以看到
| |
返回的是一个ArrayList列表,然而这个ArrayList跟常用的java.util.ArrayList并不是同一个东西


也就是说Arrays.asList()返回的并不是可扩容的那个ArrayList,而是在Arrays类内部写的另一个ArrayList,可以看到这两个ArrayList都继承了AbstractList<T>接口。
跳转到AbstractList<T>接口的add()方法定义处可以看到
| |
默认就是不支持add操作的。
而上面的注释也写到:
Note that this implementation throws an UnsupportedOperationException unless {add(int, Object) add(int, E)} is overridden.
// 除非add操作被重写否则不支持add操作
而因为java.util.ArrayList重写了add方法,java.util.Arrays.ArrayList没有重写,所以Arrays.asList()返回的列表不支持该操作。
参考链接: