原因是因为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(); }