假设我有一个枚举,它只是
public enum Blah {
A, B, C, D
}
我想找到字符串的枚举值,例如.怎么可能做到这一点?"A"
Blah.A
是我需要的方法吗?如果是这样,我将如何使用它?Enum.valueOf()
网友回答:
如果文本与枚举值不同,则另一种解决方案:
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
静态方法和在编译时创建,不会出现在源代码中。不过,它们确实出现在 Javadoc 中;例如, 显示了这两种方法。valueOf()
values()
Dialog.ModalityType
网友回答:
使用Joshua Bloch的模式,Effective Java:
(为简洁起见,进行了简化)
enum MyEnum {
ENUM_1("A"),
ENUM_2("B");
private String name;
private static final Map<String,MyEnum> ENUM_MAP;
MyEnum (String name) {
this.name = name;
}
public String getName() {
return this.name;
}
// Build an immutable map of String name to enum pairs.
// Any Map impl can be used.
static {
Map<String,MyEnum> map = new ConcurrentHashMap<String, MyEnum>();
for (MyEnum instance : MyEnum.values()) {
map.put(instance.getName().toLowerCase(),instance);
}
ENUM_MAP = Collections.unmodifiableMap(map);
}
public static MyEnum get (String name) {
return ENUM_MAP.get(name.toLowerCase());
}
}
另请参阅:
Oracle Java 示例使用枚举和实例映射
枚举类型中静态块的执行顺序
如何从字符串值中查找 Java 枚举
模板简介:该模板名称为【我想找到字符串的枚举值,例如.怎么可能做到这一点?”A”Blah.A】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。