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

44 浏览
0 Comments

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

假设我有一个枚举类型,其值为

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

我想通过一个字符串找到该枚举类型的值,例如 \"A\",对应的枚举类型值为 Blah.A。如何实现这个功能?

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

admin 更改状态以发布 2023年5月23日
0
0 Comments

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

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

0
0 Comments

是的,Blah.valueOf("A") 将会返回 Blah.A

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

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

0