使用通用枚举字段创建类。枚举字段用于获取枚举值

时间:2014-03-20 18:05:37

标签: java generics enums

我需要可以给出不同枚举类型的类,在这个类中我需要获取给定枚举的所有值。

这是我尝试的方法,但我在定义枚举字段的类型时遇到了问题:

class MyClass{
  private Class<T> enumType; //how to say who is T?

  void <T extends Enum<T>> setEnumType(Class<T> enumType){
     this.enumType = enumType;
  }

  void doSomething(){
     for (Enum<T> literal : enumType.getEnumConstants()) {
         // do something with literal.name();
     }
  }
}

更新:我无法使该类具有通用性(MyClass<T extends Enum<T>>)。所以我需要其他解决方案。

2 个答案:

答案 0 :(得分:4)

这样的东西应该有效(但我建议在构造函数中传递枚举类):

class MyClass<T extends Enum<T>> {
  private Class<T> enumType; 

  void setEnumType(Class<T> enumType){
     this.enumType = enumType;
  }

  void doSomething(){
     for (T literal : enumType.getEnumConstants()) {
         // do something with literal.name();
     }
  }
}

答案 1 :(得分:0)

最后,我实施了以下有效的解决方案:

class MyClass{
  private Class<? extends Enum<?>> enumType;

  void <T extends Enum<T>> setEnumType(Class<T> enumType){
     this.enumType = enumType;
  }

  void doSomething(){
     for (Enum<?> literal : enumType.getEnumConstants()) {
         // do something with literal.name();
     }
  }

}