【发布时间】:2011-12-06 16:39:29
【问题描述】:
所以我有这个方法:
protected void collectSelectedItems(ListSelectionModel lsm,
Collection<? super MyItemClass> result) {
for (int i : GUI.getSelectionIndices(lsm))
{
result.add(getItemByDisplayIndex(i));
}
}
我想返回集合而不是使用 void 方法:
protected <T super MyItemClass> Collection<T>
collectSelectedItems(ListSelectionModel lsm, Collection<T> result) {
for (int i : GUI.getSelectionIndices(lsm))
{
result.add(getItemByDisplayIndex(i));
}
return result;
}
打算做这样的事情(MyItemClass extends MyItemBaseClass):
List<MyItemBaseClass> list =
collectSelectedItems(lsm, new ArrayList<MyItemBaseClass>());
但我在super 上遇到语法错误:
令牌“super”的语法错误,预期
什么给了?我可以解决这个问题吗?
【问题讨论】:
-
错误说明了什么?
-
你想如何调用它?
-
Object是MyItemClass的超级,所以Collection可以是Collection<Object>。我不认为你可以在这里使用super。 -
SLaks,Kerrek:刚刚编辑答案以解决您的问题。
-
彼得,为什么不呢? PECS:我传递了 MyItemClass 的 C消费者,因此我需要使用
super而不是extends
标签: java generics bounded-wildcard