如果您有一个String并且枚举没有getSomething(String str)方法,那么如何查找枚举值?

时间:2011-09-20 15:56:13

标签: java enums

我需要像这样设置一个枚举值:

this.myEnum = ThirdPartyEnum.ABC;

但我可以获得的价值不是Enum形式。

这只是一个原始字符串:

"ABC"

ThirdPartyEnum没有ThirdPartyEnum.lookupEnumForString()

如何翻译字符串

"ABC"

为:

ThirdPartyEnum.ABC

2 个答案:

答案 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()

Enum.valueOf()

或者

ThirdPartyEnum.valueOf("ABC");

valueOf 是为所有Java Enum类定义的默认方法。

如果您正在进行函数式编程,Guava提供了一种创建函数来获取valueOf的方法。

Enums.valueOfFunction