public class D {
public static final int A = 1;
public static void main(String[] args) {
D d = new D();
switch (1) {
case d.A:
System.out.println("aaa");
break;
}
}
}
这段代码中,为什么用Class D 的实例d去访问常量A时,编译器不会认为A是一个常量
错误提示为:case expressions must be constant expressions
我个人认为这个问题可能要从指令层来理解,任何代码最终要翻译成指令才能让机器执行,如果你学过《计算机原理》,那么应该知道立即寻址和直接寻址的区别。我想这条语句对应的指令的相应位置上需要的是立即数而你给他d.a的地址就明显出现指令错误了呀。
以上仅代表个人意见,只供参考,希望对你有帮助。祝好!
D这个类里有A这个变量或常量吗?
都final了还用对象点
switch (1) 是这句代码有问题,里面应该是变量
你可以用D.A 或者A