我正在学习和试验Java泛型,并提出了以下未按预期编译的代码。 Result
无法解决。
I
代表输入,O
代表输出。
public interface Stats<I, O> {
O addItem (int index, I item);
}
public class AStats implements Stats<Item, Result> {
public static enum Result {
SUCCESS1,
SUCCESS2,
ERROR;
}
@Override
public Result addItem (int index, Item item) {
//valid code
}
}
是否有更优雅的解决方案,而不是在单独的文件中声明Result
?
一般来说,有一个返回泛型类型实例的方法是不是很糟糕?
答案 0 :(得分:8)
您的班级名称为AStats.Result
,而不是Result
:
public class AStats implements Stats<Item, AStats.Result> {
...
}
我认为返回泛型内部类型的实例并不是一个坏主意。