List<? extends Object> list = new ArrayList<? extends Object>();
有沒有人可以幫助我解釋爲什麼不能使用arraylist擴展泛型到對象?Arraylist泛型超類對象類
List<? extends Object> list = new ArrayList<? extends Object>();
有沒有人可以幫助我解釋爲什麼不能使用arraylist擴展泛型到對象?Arraylist泛型超類對象類
爲什麼不能使用數組列表時,我超級類通用對象?
因爲你不能實例化通配符參數化類型。您只能使用具體的參數化類型。通配符參數化類型出現在new
表達式中是非法的。
當然,您可以使用通配符參數化類型作爲參考類型。將它們視爲界面。您不能實例化接口本身,但可以將其用作參考類型。
所以,你的聲明更改爲:
List<? extends Object> list = new ArrayList<Object>();
但在這裏,你將無法添加任何東西到這個名單的唯一問題。事實上,我懷疑你真的需要這份名單聲明。如果你只是想要一個列表,你可以添加任何一個類的對象和它的任何子類,那麼你不需要通配符的上限。
對於例如,如果你想存儲Employee
,Doctor
,並且Student
,在同一個列表,其中所有的人都從Person
延長,那麼你可以簡單地聲明爲列表:
List<Person> persons = new ArrayList<Person>();
persons.add(new Employee()); // This is OK
persons.add(new Student()); // This too is OK
你能解釋一下你的問題是另一種方式?我無法弄清楚你不能做什麼。 –