我想从其字符串值(或可能的任何其他值)中查找一个枚举。我已经尝试了以下代码,但是在初始化程序中不允许使用静态代码。有没有简单的方法?
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烦恼,它会足够快。