在java中找不到类型的枚举常量
我在java中使用在java中找不到类型的枚举常量,java,enums,Java,Enums,我在java中使用enum,这里是enum public enum AbuseSectionType{ MUSIC("Music"), DANCE("Dance"), SOLO("Solo"), ACT("Act") private String displayString; AbuseSectionType(String displayValue) { this.displayString = displayValue; } @J
enum
,这里是enum
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;
}
}
我正在尝试获取value一个sessiontype.valueOf(“音乐”)
。我没有得到枚举常量,没有发现错误。我应该有值MUSIC
枚举的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
}
默认的valuOf()
方法将仅在使用枚举定义的精确拼写时检索相应的enmum
。在您的例子中,您已经定义了enumMUSIC
,因此为了得到它,您必须这样做:abusectionType.valueOf(“MUSIC”)代码>
为了达到您想要的效果,您必须自己在enum类中实现一个方法。举个例子,你可以这样做:
public AbuseSectionType resolve(String name) {
for(AbuseSectionType current : AbuseSectionType.values()) {
if(current.displayString.equals(name)) {
return current;
}
}
return null;
}
使用AbuseSectionType.valueOf(“音乐”)传递枚举的名称。有关valueOf的使用,请参见java文档。请更正。音乐不是音乐。即使它有一个带有该值的String
字段。enum
类型中的valueOf
方法区分大小写@Elliot Frisch如果我有音乐字符串,如何获取音乐。如果您想获取displayString,请使用AbusSectionType.MUSIC.getDisplayString()