假设我有一个列表定义如下。Java泛型和继承:无法添加到列表
private List<? extends GeneralBudgetYearBean> budgetYearBeans;
// + Getters/setters...
为什么我无法泛指名单这一类的外部如下:
GeneralBudgetYearBean gbyb;
getBudgetYearBeans().add(bgyb);
的错误是:
The method add(capture#6-of ? extends GeneralBudgetYearBean) in the type List<capture#6-of ? extends GeneralBudgetYearBean> is not applicable for the arguments (GeneralBudgetYearBean)
这是没有意义的。是否因为“扩展T”与“T”不一样,并且“T”在这里不能被替换?
我需要能够通常操纵这个类没有具体细节。在某些时候,会有一个在扩展类中构造的“SUBGeneralBudgetYearBeans”的ArrayList,这就是为什么我需要使用“?extends GeneralBudgetYearBean”表示法。
怎么样'List'? –
sp00m
2014-10-09 14:22:14
@ sp00m我不能使用它。正如我所说的,在某个时候会构建一个ArrayList,并且“扩展”表示法是实现这一点的唯一方法。 –
2014-10-09 14:23:39
http://stackoverflow.com/questions/11119804/adding-objects-to-the-extends-type-of-generic-collections – marcinj 2014-10-09 14:31:42