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:  
   
       }
}
具体为何要设计成这样,原理就不追究了,有兴趣的同学可以自己再找相关资料学习。

您可能还会对下面的文章感兴趣: