设置未知类型的枚举器对象的值

时间:2015-01-16 08:48:36

标签: java enums

假设我们有很多类型为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中执行此操作?

1 个答案:

答案 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;
 }