原因是因为list是由Arrays.asList生成的 根据Arrays源码,asList方法生成的ArrayList,并不是java.util.ArrayList,而是Arrays的一个内部类
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
该内部类直接继承了AbstractList,并且并未实现addAll方法
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
然而默认的AbstractList的addAll方法直接抛出了异常,并未有任何实现
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
public boolean add(E e) {
throw new UnsupportedOperationException();
}