如何在 Java 中从字符串值获取枚举值
如何在 Java 中从字符串值获取枚举值
假设我有一个枚举类型,其值为
public enum Blah { A, B, C, D }
我想通过一个字符串找到该枚举类型的值,例如 \"A\"
,对应的枚举类型值为 Blah.A
。如何实现这个功能?
Enum.valueOf()
是我需要使用的方法吗?如果是,我该如何使用它?
admin 更改状态以发布 2023年5月23日
如果文本与枚举值不同,另一个解决方案是:
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; } }
是的,Blah.valueOf("A")
将会返回 Blah.A
。
请注意,名称必须完全匹配,包括大小写: Blah.valueOf("a")
和 Blah.valueOf("A ")
都会抛出一个 IllegalArgumentException
异常。
valueOf()
和 values()
这两个静态方法是在编译时创建的,不会出现在源代码中。不过它们会出现在 Javadoc 中;例如,Dialog.ModalityType
中显示了这两个方法。