我需要可以给出不同枚举类型的类,在这个类中我需要获取给定枚举的所有值。
这是我尝试的方法,但我在定义枚举字段的类型时遇到了问题:
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>>
)。所以我需要其他解决方案。
答案 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();
}
}
}