为什么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()
返回的列表不支持该操作。
参考链接: