这是为了避免针对不同枚举类型进行比较的能力。 将它限制为 一种 类型(即switch
语句中的枚举值的类型)是有意义的。
更新 :实际上是为了保持二进制兼容性。以下是JLS
第13.4.9章中途引用的内容:
要求内联常量的一个原因是,
switch
语句中的每个都需要常量case,并且两个这样的常量值不能相同。编译器switch在编译时检查语句中是否有重复的常量值。该class
文件格式没有做的情况下价值观的象征性的联系。
换句话说,由于中的类标识符
EnumType.ENUM1,它不能被表示为编译时常量表达式,而该
switch语句是必需的。



