Java获取枚举的属性

时间:2019-04-11 02:08:31

标签: java enums

我想获取枚举的属性值。值为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。请帮忙。

3 个答案:

答案 0 :(得分:3)

您的问题是枚举名称区分大小写。 ko != KO,依此类推。您需要确保传递给valueOf()的所有内容都与该名称完全匹配。

第二个问题(在解决第一个问题时会遇到)是,在name()上调用enum不会返回name属性。您需要编写一种方法来返回给定的键,例如KO

答案 1 :(得分:2)

https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#valueOf(java.lang.Class,%20java.lang.String)

CASE与常量名而不是属性名匹配。因此LanguageType.valueOf(“ ko”)会有一个例外,告诉您没有这样的枚举常量。

根据您的模板,您应该传递LanguageType.valueOf(“ KO”)

答案 2 :(得分:-3)

您需要使静态方法getValue(lang)匹配一个