Jas*_*n S 10 java generics bounded-wildcard
所以我有这个方法:
protected void collectSelectedItems(ListSelectionModel lsm,
Collection<? super MyItemClass> result) {
for (int i : GUI.getSelectionIndices(lsm))
{
result.add(getItemByDisplayIndex(i));
}
}
Run Code Online (Sandbox Code Playgroud)
我想返回集合而不是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;
}
Run Code Online (Sandbox Code Playgroud)
意图做这样的事情(在哪里MyItemClass extends MyItemBaseClass):
List<MyItemBaseClass> list =
collectSelectedItems(lsm, new ArrayList<MyItemBaseClass>());
Run Code Online (Sandbox Code Playgroud)
但我得到一个语法错误super:
令牌"super"上的语法错误,预期
是什么赋予了?我能解决这个问题吗?
这是一个链接,解释了为什么不允许这样做:
http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ107
它基本上只是说在类型参数中使用super"不会给你任何东西",因为如果允许这样做,擦除可能只是将它擦除Object,这没有多大意义.
| 归档时间: |
|
| 查看次数: |
5654 次 |
| 最近记录: |