1
        final int a=2;
        final int b;
        b=3;
        
        switch(num){
            case a : // Legal
            case b : //Illegal
        }

案例 a合法的,但案例 b非法的。

谁能解释为什么?

4

1 回答 1

6

switch语句需要常量表达式大小写标签。

虽然b在代码执行后是一个常量(因此final有效),但它不是 JLS 含义的常量表达式:https://docs.oracle.com/javase/specs/jls/se8/html/jls-15。 html#jls-15.28

于 2021-09-03T19:07:15.463 回答