Java中獎數組轉換爲List<T>容器有一個很方便的方法 Arrays.asList(T ... a),我經過此方法給容器進行了賦值操做,接着對其進行 添加元素,卻發現會拋出一個(java.lang.UnsupportedOperationException)異常。java
看了一下源碼:數組
public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); }
定位到 ArrayList 內中,發現其實Arrays 的內部類,而且繼承了AbstractList 類(abstract 類), 但並無覆寫 add() 方法,而是直接繼承的。 查看 AbstractList 源碼發現,其不少方法都要求在子類中進行覆寫的,若是隻繼承的話,那麼調用這些方法就會拋出一個異常。spa
// AbstractList 中實現的 add 方法 public boolean add(E e) { add(size(), e); return true; } public void add(int index, E element) { throw new UnsupportedOperationException(); }
如上,若是 在子類中單單是繼承的話,調用add 方法就會拋出異常
結論: 經過Arrays.asList(T ... a) 方法初始化List 容器,該容器的長度是不可改變的。因此若是你要是想在你的容器中添加或者刪除元素的話,仍是使用 LinkedList () 【快插入 ,快刪除】 或者 ArrayList() 【快查詢】。code