通过字符串值查找Java枚举

假设我有一个枚举

public enum Blah {
    A, B, C, D
}

我想找到一个字符串的枚举值,例如"A" ,它将是Blah.A 怎么可能做到这一点?

Enum.valueOf()是我需要的方法吗? 如果是这样,我将如何使用它?


是的, Blah.valueOf("A")会给你Blah.A

请注意,名称必须完全匹配,包括case: Blah.valueOf("a")Blah.valueOf("A ")都会抛出IllegalArgumentException

静态方法valueOf()values()是在编译时创建的,并不出现在源代码中。 尽管如此,它们确实出现在Javadoc中; 例如, Dialog.ModalityType显示两种方法。


如果文本与枚举值不相同,则为另一种解决方案:

public enum Blah {
  A("text1"),
  B("text2"),
  C("text3"),
  D("text4");

  private String text;

  Blah(String text) {
    this.text = text;
  }

  public String getText() {
    return this.text;
  }

  public static Blah fromString(String text) {
    for (Blah b : Blah.values()) {
      if (b.text.equalsIgnoreCase(text)) {
        return b;
      }
    }
    return null;
  }
}
链接地址: http://www.djcxy.com/p/991.html

上一篇: Lookup Java enum by string value

下一篇: Parsing values from a JSON file?