我想从它的字符串值(或任何其他值)中查找一个枚举。我已经尝试了以下代码,但它不允许在初始化程序中使用静态。有简单的方法吗?
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为每个枚举自动创建的方法。
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; }
如果您的分析器告诉您,请稍后再进行 Map 实现。
我知道它正在迭代所有值,但是只有 3 个枚举值几乎不值得任何其他努力,事实上,除非你有很多值,否则我不会为 Map 而烦恼,它会足够快。