假設我有一個列表定義如下。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