我在 Java 中的 Enum 上有一个 switch 语句,让我们调用 IMyInterface.MyEnum
我的每个案例陈述的形式如下:
IMyInterface.MyEnum.MyValue,(尽管如果导入,我可以删除 IMyInterface)。
但是,编译器(Java 6)会抛出错误:
“合格的案例标签 IMyInterface.MyEnum.MyValue 必须替换为不合格的枚举常量 MyValue”。
我显然可以做到这一点,但对于我的一生,我不明白这个错误的目的是什么。显然,如果编译器可以处理实际值,它应该能够像处理常量一样处理完全限定名称。事实上,我假设编译器将常量转换为完全限定名称。
那么,Java 大师们,这背后的理由是什么?
谢谢你!
来自 JLS:
(要求内联常量的一个原因是 switch 语句在每种情况下都需要常量,并且没有两个这样的常量值可以相同。编译器在编译时检查 switch 语句中的重复常量值;类文件格式不进行大小写值的符号链接。)
你可以找到它here https://docs.oracle.com/javase/specs/jls/se6/html/binaryComp.html#45140.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)