我有一个与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();
}
我不能将其传递给构造函数,因为它是一个直接插入父级的自定义视图。
最佳答案
由于要进行擦除,因此必须将枚举类的实例传递给构造函数:
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()
。风险在于调用者可以按正确的顺序等传递任何数组,不一定是带有所有值的数组,没有重复项。