枚举被声明为泛型参数时获取枚举的values()

3 java generics enums

下面显示的代码确实有效,因为该方法values()是静态的.我的问题是如果B不是通用的,我怎样才能实现下面的代码.

class A<B extends Enum<B>> {
    public A() {
        for (B b : b.values()) {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以想到两个解决方案:

  1. 将枚举值传递给A的构造函数
  2. make B实现一个接口,定义获取枚举值的方法.

对我来说两者都显得凌乱.谁有更好的解决方案?

And*_*ndy 7

尝试使用getEnumConstants()

  • +1:这仍然需要`B`类在运行时可用. (2认同)
  • 所以,你的建议是A的构造函数应该被修改为如下:public A(Class <B> clazzB){for(B b:clazzB.getEnumConstants()); }? (2认同)