2014-02-25 132 views
0

我有一個Java列表擴展抽象

public abstract class Person{/*..*/} 

public class Woman extends Person{/*..*/} 
public class Man extends Person{/*..*/} 

我試圖實例可能包含無論是男人還是女人List中,我嘗試這樣做:

List<? extends Person> PersonTypes = new List<? extends Person>() 

但它不能實例化,是否有辦法實現我想要的並保持Person抽象?

回答

2

List是一個接口,因此不能實例化自己,類似於你的抽象Person類,它不能被實例化。

你應該實例化一個類,它實現列表,例如ArrayList:

List<Person> people = new ArrayList<Person>(); 
+0

好的,謝謝,我應該考慮一下,我犯了什麼愚蠢的錯誤。它現在可以工作 – user3332598

0

列表也是一個接口,不能被實例化。試試這個:

List<? extends Person> PersonTypes = new ArrayList<Person>(); 
+0

這不會編譯。您不能實例化通配符參數化類型。 –

+0

是的,複製粘貼他的代碼時沒有抓到它。 – jgitter

2

它應該工作。

List<Person> PersonTypes = new ArrayList<Person>()