我有一个枚举,其字符串定义如下
Exception in thread "main" java.lang.IllegalArgumentException: No enum constant HelloWorld.MyEnumType.primary
at java.lang.Enum.valueOf(Enum.java:238)
at HelloWorld$MyEnumType.valueOf(HelloWorld.java:11)
at HelloWorld.main(HelloWorld.java:36)
当我用下面的字符串
定义我的枚举时{{1}}
崩溃
{{1}}
我错过了什么吗?
答案 0 :(得分:3)
您可以致电MyEnumType.valueOf(x.toUpperCase())
让它查找大写版本。
e.g。
MyEnumType e = MyEnumValue.valueOf("primary".toUpperCase());
我是否有可能提供Secondary-Style,它可以实例化我想要的枚举,而无需手动操作字符串?
您可以提供替代查找的映射。
static final Map<String, MyEnumType> altMap = new HashMap<>();
static {
for (MyEnumType met : MyEnumType.values()) {
altMap.put(met.myEnumType, met);
// add more aliases as desired.
}
}
public static MyEnumType lookup(String str) {
MyEnumType met = altMap.get(str);
return met == null ? valueOf(str) : met;
}