假设我们有很多类型为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
中执行此操作?
答案 0 :(得分:2)
您应该使用Enum.getDeclaringClass()方法:
public boolean setStuff(Enum unknownEnum, String value) {
try {
unknownEnum = Enum.valueOf(unknownEnum.getDeclaringClass(), value);
} catch (IllegalArgumentException e) {
return false;
}
return true;
}