我想写一个泛型方法,它采用扩展Enum的有界参数.例如,如果我有一个枚举如下:
public enum InputFlags{
ONE (0000001),
TWO (0000002),
THREE (00000004);
public final int value;
InputFlags(int value){
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以做以下事情:
for (InputFlags ifg : InputFlags.values()){
// Do something with ifg
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在返回参数有界的泛型方法中执行上述操作,则无法访问该values()方法:
public static <T extends Enum> T getFlags(int f){
T.values(); // NOT allowed, even though I have bounded by extending Enum.
}
Run Code Online (Sandbox Code Playgroud)
好像我无法访问values()泛型方法.这是Enums的特点还是有办法解决这个问题?