如何从其String值查找Java枚举?

我想从它的字符串值(或可能任何其他值)查找枚举。我试过下面的代码,但它不允许静态初始化。有没有简单的方法?

public enum Verbosity {

    BRIEF, NORMAL, FULL;

    private static Map<String, Verbosity> stringMap = new HashMap<String, Verbosity>();

    private Verbosity() {
        stringMap.put(this.toString(), this);
    }

    public static Verbosity getVerbosity(String key) {
        return stringMap.get(key);
    }
};
使用为每个枚举自动创建的valueOf方法。

Verbosity.valueOf("BRIEF") == Verbosity.BRIEF

对于任意值以:开头:

public static Verbosity findByAbbr(String abbr){
    for(Verbosity v : values()){
        if( v.abbr().equals(abbr)){
            return v;
        }
    }
    return null;
}

只有在您的分析器告诉您时,才会继续使用地图实现。

我知道它是迭代所有的值,但只有3枚枚值,几乎不值得任何其他努力,事实上,除非你有很多值,我不会打扰一个地图,它将是足够快。

http://stackoverflow.com/questions/1080904/how-can-i-lookup-a-java-enum-from-its-string-value

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何从其String值查找Java枚举?