我有一个与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();
}
我无法将其传递给构造函数,因为它是直接插入父级的自定义视图。
答案 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()
。风险在于调用者可以按正确的顺序等传递任何数组,不一定是带有所有值的数组,不能重复。