【发布时间】:2015-07-23 05:52:15
【问题描述】:
我有ArrayList<Unit> units。我想编写一个函数,该函数将返回指定子类的所有对象,用作参数。但是我无法让它工作。这是我所拥有的:
public static ArrayList<? extends Unit> getTheseUnits(Class<? extends Unit> specific_unit) {
ArrayList<specific_unit> res = new ArrayList<>(); //'specific_unit' is in red here. Adding '.class' or '.getClass()' after it does not resolve anything
for (Unit u : units){
if (u instanceof specific_unit){
res.add(u);
}
}
return res;
}
【问题讨论】:
-
“这里是红色的”转换为编译器错误。在尝试编写此类代码之前,也许您应该真正学习一些 Java 基础知识。含义:在转向泛型类型的复杂用法之前,了解编译器错误等基本概念(以及如何阅读它们)!您的“此处的红色”归结为:您不能将变量名用作泛型类型,因此
ArrayList <specific_unit>不是正确的 Java 声明。 -
@Jägermeister 我知道这是编译器错误,但是 Eclipse 仅说明
specific_unit cannot be resolved并没有多大帮助