final int a = 1;
final int b;
b = 2;
final int x = 0;
switch (x) {
case a:break; // ok
case b:break; // compiler error: Constant expression required
}
/* COMPILER RESULT:
constant expression required
case b:break;
^
1 error
*/
为什么会出现这种错误?如果我执行 final int b = 2
,一切正常。
最佳答案
switch 语句中的大小写在编译时 应该是常量。命令
final int b=2
在编译时将 2
的值赋给 b
。但是下面的命令在运行时将2
的值赋给了b
。
final int b;
b = 2;
因此,当编译器在 switch
语句的一种情况下找不到常量时,编译器会报错。
关于java - switch 语句中的最终变量大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255270/