public ArrayList(Collection

上面那句話是ArrayList的源碼內容
?是“任意類”的意思,extends繼承不多說,E是指定類型。

首先,樓上說的不錯,是泛型。這是java 1.5以後引入的。
從此以後,定義一個空的ArrayList需要這樣,比如我需要一個MyClass的順序表,則:
ArrayList<MyClass> myList = new ArrayList<MyClass>();
這是因爲ArrayList類的聲明是public class ArrayList<E>。
而此時,MyClass就是“指定類型”E了,意味着所有ArrayList類中聲明的E, 換成了MyClass。

同理如果我要使用你所提到的public ArrayList(Collection<? extends E> c)來構造一個ArrayList,則:
如我有MySubClass是MyClass的子類。
Collection<MyClass> myCollection;  //myCollection裏有很多元素。
Collection<MySubClass> mySubCollection;  //mySubCollection裏有很多元素。
ArrayList<MyClass> myList = new ArrayList<MyClass>(myCollection);

也可以:
ArrayList<MyClass> myList = new ArrayList<MyClass>(mySubCollection);

意思是,凡是MyClass或者MyClass的子類的Collection均可以構造成ArrayList<MyClass>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章