我有一个抽象类AbstractCard,我想用它作为我的List数据传递给我的BaseAdapter
。我不想将List<AbstractCard>
传递给BaseAdapter
,而是传递一个扩展AbstractCard的List<Object>
。
例如,我有一个扩展AbstractCard的类卡。在我的BaseAdapter中,我有:
private List<AbstractCard> abstractCards = new ArrayList<AbstractCard>();
public void setData(List<AbstractCard> abstractCards) {
this.abstractCards = abstractCards;
}
现在,由于Card扩展了AbstractCard,我认为我可以将List<Card>
传递给setData(),但它显然给了我错误。我怎么能这样做,所以我需要一个基于其父类的类型?
答案 0 :(得分:3)
您是否尝试过:
private List<? extends AbstractCard> abstractCards = new ArrayList<AbstractCard>();
public void setData(List<? extends AbstractCard> abstractCards) {
this.abstractCards = abstractCards;
}
然后:
someClass.setData(new ArrayList<ConcreteCard>());
答案 1 :(得分:0)
您无法实例化List
,因为它是一个接口(请参阅List。您必须使用实现List
的具体类。例如,使用ArrayList
:< / p>
ArrayList<Card> list = new ArrayList<Card>();