我想获取枚举的属性值。值为String
。
public enum LanguageType {
AR("아랍어","ar"),
DE("독일어","de"),
EN("영어","en"),
ES("스페인어","es"),
FR("프랑스어","fr"),
JA("일본어","ja"),
KO("한국어","ko"),
ZH("중국어","zh");
public String name;
public String label;
LanguageType(String name, String label) {
this.name = name;
this.label = label;
}
}
String str = LanguageType.valueOf(lang).name();
它返回错误。我认为它会返回枚举类本身。
错误是
java.lang.IllegalArgumentException: No enum constant com.interpark.lab.tour.geolocation.code.LanguageType.ko
如果我用“ ko”调用函数,则“한국어”是期望值。
我只使用javascript。非常新手的Java。请帮忙。
答案 0 :(得分:3)
您的问题是枚举名称区分大小写。 ko != KO
,依此类推。您需要确保传递给valueOf()
的所有内容都与该名称完全匹配。
第二个问题(在解决第一个问题时会遇到)是,在name()
上调用enum
不会返回name
属性。您需要编写一种方法来返回给定的键,例如KO
。
答案 1 :(得分:2)
CASE
与常量名而不是属性名匹配。因此LanguageType.valueOf(“ ko”)会有一个例外,告诉您没有这样的枚举常量。
根据您的模板,您应该传递LanguageType.valueOf(“ KO”)
答案 2 :(得分:-3)
您需要使静态方法getValue(lang)匹配一个