Arrays.asList 返回值类型
public static void main(String[] args) { Integer[] datas = {1,2,3,4,5}; List<Integer> list = Arrays.asList(datas); list.add(5); System.out.println(list.size()); }
该代码会报错 java.lang.UnsupportedOperationException ---不支持的操作
那么为什么不支持呢,先看API
再看源码就能很明白问题的所在了
@SafeVarargs @SuppressWarnings("varargs") public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }
注意!这个返回的ArrayList可不是我们平时用的,而是Arrays的一个内部类
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable{ /。。。。。。。。。 }
而这个类实现了Serializable接口,这就说明他是可序列化的,正如String一样,不可做更改