An enum switch case label must be the unqualified name of an enumeration constant
在使用java POI操作Excel的时候,使用枚举值时,会出现这样的错误提示。
先解释一下这句英文的含义:一个枚举switch case标签必须是一个枚举常量的非限定名称。
通俗一点,就是在case标签中不能加类(枚举应该算是一种特殊的类吧)的限定。
在Android开发中,有一个变量可能会被很多界面引用,所以我们就会在它前面增加static final public这样的修饰,但写多了,总感觉到比较散,后来我想到了enum类型,但在使用的过程,我遇到一个问题:enum和switch老是报错,如第一段的一个错的两种提示,以前很菜,不懂,当时就认为安卓本身就不支持enum和switch一起使用,随着开发的经验越来越丰富,又回想起这事,感觉不对呀,于是去查了点资料,试了试,哈哈,原来是可以的,所以我把它记录下来,分享给大家!
来个例子吧,比较直观一点。代码从网上当的,省点时间,解决方式是一样的:
枚举类:
public enum ColorType{
GREEN,
RED,
ORANGE,
WHITE,
BLACK
}
以下是报错的使用方法:
private void TestEnum(ColorType type){
switch (type){
case ColorType.GREEN: // 编译时报错
break;
case ColorType.RED: // 编译时报错
break;
case ColorType.ORANGE: // 编译时报错
break;
case ColorType.WHITE: // 编译时报错
break;
case ColorType.BLACK: // 编译时报错
break;
default:
}
}
以下是正确的使用方式:
private void TestEnum(ColorType type){
switch (type){
case GREEN:
break;
case RED:
break;
case ORANGE:
break;
case WHITE:
break;
case BLACK:
break;
default:
}
}
具体为何要设计成这样,原理就不追究了,有兴趣的同学可以自己再找相关资料学习。