如何从Java中的字符串值中获取枚举值

新手上路,请多包涵

说我有一个枚举,它只是

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

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

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

原文由 Malachi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 662
2 个回答

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

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

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

原文由 Michael Myers 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 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;
    }
}

原文由 JoséMi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题