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

2022-08-31 01:24:56

假设我有一个枚举,它只是

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

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

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


答案 1

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

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

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


答案 2

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

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