我需要像这样设置一个枚举值:
this.myEnum = ThirdPartyEnum.ABC;
但我可以获得的价值不是Enum形式。
这只是一个原始字符串:
"ABC"
ThirdPartyEnum
没有ThirdPartyEnum.lookupEnumForString()
。
如何翻译字符串
"ABC"
为:
ThirdPartyEnum.ABC
答案 0 :(得分:4)
你可以做到
ThirdPartyEnum.valueOf("ABC");
只是要添加,并且与您提到的lookupEnumForString()
方法相关,如果您想通过其中一个属性搜索枚举值,则可以使用values()
。请注意,values()
是公开的,如果您无法控制第三方枚举,也可以使用它。
public enum MyEnum {
VAL1("1"), VAL2("2");
String attr;
private MyEnum(String attr){
this.attr = attr;
}
public String getAttr() { return attr; }
public static MyEnum getByAttr(String searchAttr) {
for(MyEnum t : values()){
if(searchAttr.equals(t.getAttr())){
return t;
}
}
}
}
答案 1 :(得分:2)
尝试使用Enum.valueOf()
或者
ThirdPartyEnum.valueOf("ABC");
valueOf 是为所有Java Enum类定义的默认方法。
如果您正在进行函数式编程,Guava提供了一种创建函数来获取valueOf的方法。