为未知类型的枚举器对象设置值
Set value for enumerator object of unknown type
假设我们有很多类型 A、B 等的枚举。:
public enum A {SOME, STUFF}
public enum B {OTHER, STUFF}
....
现在,我们得到了一个枚举类型未知的对象。有没有办法设置它的值?我知道 Java
是一种静态类型语言,但也许有解决方法?
我试过类似的东西:
public Enum getStuff(Enum unknownEnum, String value) {
try {
return Enum.valueOf(unknownEnum.getClass(), value);
} catch (IllegalArgumentException e) {
return null;
}
}
但这行不通,因为 valueOf 需要强类型,对吧?您知道如何在 Java
中执行此操作吗?
您应该改用 Enum.getDeclaringClass() 方法:
public boolean setStuff(Enum unknownEnum, String value) {
try {
unknownEnum = Enum.valueOf(unknownEnum.getDeclaringClass(), value);
} catch (IllegalArgumentException e) {
return false;
}
return true;
}
假设我们有很多类型 A、B 等的枚举。:
public enum A {SOME, STUFF}
public enum B {OTHER, STUFF}
....
现在,我们得到了一个枚举类型未知的对象。有没有办法设置它的值?我知道 Java
是一种静态类型语言,但也许有解决方法?
我试过类似的东西:
public Enum getStuff(Enum unknownEnum, String value) {
try {
return Enum.valueOf(unknownEnum.getClass(), value);
} catch (IllegalArgumentException e) {
return null;
}
}
但这行不通,因为 valueOf 需要强类型,对吧?您知道如何在 Java
中执行此操作吗?
您应该改用 Enum.getDeclaringClass() 方法:
public boolean setStuff(Enum unknownEnum, String value) {
try {
unknownEnum = Enum.valueOf(unknownEnum.getDeclaringClass(), value);
} catch (IllegalArgumentException e) {
return false;
}
return true;
}