我想在java中使用switch case检查一个值为enum的字符串,所以我这样做了:
public enum DemoEnumType {
ALL(""),
TOP("acb"),
BOTTOM("def");
private String code;
DemoEnumType(String code) {
this.code = code;
}
public String code() {
return this.code;
}
}
当我运行这个代码时,它抛出一个异常:
public class Demo {
public static void main(String[] args) {
DemoEnumType typeValue = DemoEnumType.valueOf("acb");
switch (typeValue){
case ALL:
System.out.print("match");
case BOTTOM:
System.out.print("match");
case TOP:
System.out.print("match");
}
}
}
例外:
线程“main”java.lang.illegalargumentexception中出现异常:没有枚举常量package.demoenumtype.acb。
2条答案
按热度按时间to94eoyn1#
枚举成员是all,top和bottom,而不是字符串值。只能传递给valueof()。
要使用字符串值,可以在枚举中创建一个方法,该方法接收字符串并返回相应的枚举
mklgxw1f2#
不存在具有该值的枚举元素
acb
.Enum#valueOf
将抛出一个IllegalArgumentException
如果给定的name
. 你需要使用ALL
,BOTTOM
,或TOP
.或者,您可以使用字符串Mapdemoenumtype进行o(1)查找,并使用您提供的值。