Java 从泛型类获取枚举列表
我有一个类,它是用Enum的扩展参数化的Java 从泛型类获取枚举列表,java,android,generics,enums,Java,Android,Generics,Enums,我有一个类,它是用Enum的扩展参数化的 public class MyClass<EnumType extends Enum> { public MyClass(){ Enum<?>[] enums = EnumType.getEnumConstants(); } } 公共类MyClass{ 公共MyClass(){ Enum[]enums=EnumType.getEnumConstants(); } } 该行: Enum<?>[]
public class MyClass<EnumType extends Enum> {
public MyClass(){
Enum<?>[] enums = EnumType.getEnumConstants();
}
}
公共类MyClass{
公共MyClass(){
Enum[]enums=EnumType.getEnumConstants();
}
}
该行:
Enum<?>[] enums = EnumType.getEnumConstants()
Enum[]enums=EnumType.getEnumConstants()
无法使用“无法解析方法”编译
如何获取基类型和枚举
OTOH,如果我执行以下操作,它工作正常:
public void setEnumType(Class <? extends Enum> clazz){
Enum<?>[] enums = clazz.getEnumConstants();
}
public void setEnumType(Class由于擦除,必须将枚举类的实例传递给构造函数:
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);
公共类MyClass{
//^别忘了
公共密级(c级){
Enum[]enums=c.getEnumConstants();
}
}
MyClass m=新的MyClass(YourEnum.class);
或者,您可以传递YourEnum.values()
直接。存在的风险是调用者可能会以正确的顺序传递任何数组,不一定是一个具有所有值的数组,也不一定是重复的数组。了解类型擦除。看看EnumSet
,它有接受任何Enum
的静态工厂方法。另外,你应该使用class MyClass
我知道类型erasure和我假设这是我的问题。我希望有办法解决它。使用allOf会遇到与上面类似的问题。抱怨参数的“expression expected”。