一点上下文。这是关于 switch case 中限定枚举名称的问题,如示例中所示:
enum MyEnum {
A,
B,
;
}
switch(methodReturnungMyEnum()){
case MyEnum.A:
// ...
break
case MyEnum.B:
// ...
break
}
这会产生编译器错误
枚举 switch case 标签必须是枚举常量的非限定名称
是的。解决方案很简单:删除MyEnum.
部分。那不是我的问题。
我只是想知道为什么首先禁止这样做。我知道基本上不可能肯定地回答为什么以某种方式完成某事。相反,我想询问可能导致此决定的原因。合格和不合格的枚举常量(或者一般来说可能是符号)有什么不同?如果编译器仍然允许这样做会出现什么问题?
虽然关于如何修复编译器错误本身存在很多问题,但似乎没有人解决上述问题。