java中没有找到类型的枚举常量

gle*_*ell 5 java enums

enum在java中使用,这是枚举

public enum AbuseSectionType{

    MUSIC("Music"), DANCE("Dance"), SOLO("Solo"), ACT("Act")

    private String displayString;

    AbuseSectionType(String displayValue) {
        this.displayString = displayValue;
    }

    @JsonValue
    public String getDisplayString() {
        return displayString;
    }

    public void setDisplayString(String displayString) {
        this.displayString = displayString;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力获取价值AbuseSectionType.valueOf("Music")。我没有得到任何枚举常量,也没有发现错误。我应该有价值MUSIC

Win*_*ter 5

在您的情况下,枚举name()的 是声明它时指定的名称MUSIC

如果我们阅读 javadoc valueOf()

返回具有指定名称的指定枚举类型的枚举常量。

valueOf()正在使用name()枚举的。但你想要达到的目的不同,所以不能使用这种方法。您可以做的是创建自己的方法,从您自己的字段 ( ) 中查找值displayString

这是一个例子:

public static AbuseSectionType fromDisplayString(String displayString)
{
    for(AbuseSectionType type : AbuseSectionType.values())
        if(type.getDisplayString().equals(displayString)
            return type;

    return null; //not found
}
Run Code Online (Sandbox Code Playgroud)