如何在java中初始化抽象类型的List,以便稍后我可以将子类型添加到列表中

时间:2012-04-14 18:24:25

标签: java list collections abstract-class

tldr:如何创建抽象类型BankAccount列表并将具体子类型添加到列表中

在java中我有一个名为BankAccount的类。它是一个抽象类,因为我不希望任何人使用常规的BankAccount,他们应该使用子类型SavingsAccount,CheckingAccount,VacationAccount。

我希望在客户类中拥有一个属性为List的属性。在类定义中,我添加了一个属性,并没有将它初始化为任何东西。在构造函数中,我想根据用户在构造函数中指定的内容添加一个帐户,但是当我这样做时,我在调用add()时出错。

它看起来像这样

List<BankAccount> accounts;

accounts.add(new CheckingAccount() );

这应该有用吗?我究竟做错了什么。我试着做了

List<BankAccount> accounts = new List<BankAccount>(); 

但这不起作用。

1 个答案:

答案 0 :(得分:10)

也许你的意思是:

List<BankAccount> accounts = new ArrayList<BankAccount>();

List只是一个接口,您应该在创建实例时使用具体实现,例如ArrayList