如何在 Java 中从字符串值中获取枚举值
假设我有一个枚举,它只是
public enum Blah {
A, B, C, D
}
我想找到一个字符串的枚举值,例如,这将是.怎么可能做到这一点?"A"
Blah.A
Enum.valueOf()
是我需要的方法吗?如果是这样,我该如何使用它?
假设我有一个枚举,它只是
public enum Blah {
A, B, C, D
}
我想找到一个字符串的枚举值,例如,这将是.怎么可能做到这一点?"A"
Blah.A
Enum.valueOf()
是我需要的方法吗?如果是这样,我该如何使用它?
是的,会给你.Blah.valueOf("A")
Blah.A
请注意,名称必须完全匹配,包括大小写:并且两者都抛出一个 .Blah.valueOf("a")
Blah.valueOf("A ")
IllegalArgumentException
静态方法和是在编译时创建的,不会出现在源代码中。不过,它们确实出现在Javadoc中。例如,Dialog.ModalityType
显示了这两种方法。valueOf()
values()
如果文本与枚举值不同,则另一种解决方案:
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;
}
}