【发布时间】:2015-01-12 07:11:36
【问题描述】:
我想编写一个泛型方法,它采用扩展 Enum 的有界参数。例如,如果我有一个枚举如下:
public enum InputFlags{
ONE (0000001),
TWO (0000002),
THREE (00000004);
public final int value;
InputFlags(int value){
this.value = value;
}
}
然后我可以执行以下操作:
for (InputFlags ifg : InputFlags.values()){
// Do something with ifg
}
但是,如果我尝试在返回参数有界的泛型方法中执行上述操作,我将无法访问 values() 方法:
public static <T extends Enum> T getFlags(int f){
T.values(); // NOT allowed, even though I have bounded by extending Enum.
}
似乎我无法在通用方法中访问values()。这是枚举的特性还是有办法解决这个问题?
【问题讨论】:
-
看来你正在重塑
EnumSet。