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一樣,不可做更改