上面那句話是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>