为什么我可以在下面的代码中直接访问枚举常量HOT:
enum SPICE_DEGREE {
MILD, MEDIUM, HOT, SUICIDE;
}
class SwitchingFun {
public static void main(String[] args) {
SPICE_DEGREE spiceDegree = SPICE_DEGREE.HOT; //Unable to access HOT directly
switch (spiceDegree) {
case HOT: //Able to access HOT directly here
System.out.println("Have fun!");
}
}
}发布于 2015-03-21 18:43:40
这就是定义语言的方式-当case标签是枚举值时,这意味着switch表达式必须是该类型的枚举,因此在任何地方指定枚举类型都是多余的。
每个case标签都有一个case常量,该常量可以是常量表达式,也可以是枚举常量的名称。
和
如果switch语句的表达式的类型是枚举类型,则与switch语句关联的每个case常量都必须是该类型的枚举常量。
发布于 2015-03-21 18:44:04
Java推断switch语句中提供的表达式的类型,然后只允许在case块中列出解析类型的有效值。
如果我们必须为每个case指定枚举常量的类型,那就太冗长了。
https://stackoverflow.com/questions/29181747
复制相似问题