从泛型类获取枚举列表

时间:2018-06-20 22:39:14

标签: java android generics enums

我有一个与Enum扩展相关的类。

public class MyClass<EnumType extends Enum> { 

  public MyClass(){
    Enum<?>[] enums = EnumType.getEnumConstants();
  }

}

该行:

Enum<?>[] enums = EnumType.getEnumConstants()

无法通过“无法解析方法”进行编译。

如何获取基本类型并获取枚举?

OTOH,如果我执行以下操作,则可以正常运行:

public void setEnumType(Class <? extends Enum> clazz){
   Enum<?>[] enums = clazz.getEnumConstants();
}

我无法将其传递给构造函数,因为它是直接插入父级的自定义视图。

1 个答案:

答案 0 :(得分:1)

由于擦除,您必须将枚举类的实例传递给构造函数:

public class MyClass<EnumType extends Enum<EnumType>> { 
                                       // ^ don't forget this    
  public MyClass(Class<EnumType> c){
    Enum<?>[] enums = c.getEnumConstants();
  }

}

MyClass<YourEnum> m = new MyClass<>(YourEnum.class);

或者,您可以直接传递YourEnum.values()。风险在于调用者可以按正确的顺序等传递任何数组,不一定是带有所有值的数组,不能重复。