说我有一个枚举,它只是
public enum Blah {
A, B, C, D
}
我想找到一个字符串的枚举值,例如 "A"
这将是 Blah.A
。怎么可能做到这一点?
Enum.valueOf()
是我需要的方法吗?如果是这样,我将如何使用它?
原文由 Malachi 发布,翻译遵循 CC BY-SA 4.0 许可协议
说我有一个枚举,它只是
public enum Blah {
A, B, C, D
}
我想找到一个字符串的枚举值,例如 "A"
这将是 Blah.A
。怎么可能做到这一点?
Enum.valueOf()
是我需要的方法吗?如果是这样,我将如何使用它?
原文由 Malachi 发布,翻译遵循 CC BY-SA 4.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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
是的,
Blah.valueOf("A")
会给你Blah.A
。请注意,名称必须 完全 匹配,包括大小写:
Blah.valueOf("a")
和Blah.valueOf("A ")
都抛出IllegalArgumentException
。静态方法
valueOf()
和values()
是在编译时创建的,不会出现在源代码中。不过,它们确实出现在 Javadoc 中;例如,Dialog.ModalityType
显示了这两种方法。