Java switch 语句(为什么这是非法的?)
Java switch statement (why is this illegal?)
final int a=2;
final int b;
b=3;
switch(num){
case a : // Legal
case b : //Illegal
}
案例 a 合法 但 案例 b 非法.
谁能解释为什么?
switch
语句需要常量表达式大小写标签。
虽然 b
是代码执行后的常量(因此 final
有效),但它不是 JLS 意义上的常量表达式:https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.28
final int a=2;
final int b;
b=3;
switch(num){
case a : // Legal
case b : //Illegal
}
案例 a 合法 但 案例 b 非法.
谁能解释为什么?
switch
语句需要常量表达式大小写标签。
虽然 b
是代码执行后的常量(因此 final
有效),但它不是 JLS 意义上的常量表达式:https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.28