final int a=2; final int b; b=3; switch(num){ case a : // Legal case b : //Illegal }el caso a es legal pero el caso b es ilegal .
¿Alguien puede explicar por qué?
La instrucción switch requiere etiquetas de mayúsculas y minúsculas de expresión constante.
Si bien b es una constante después de que se ejecuta el código (para que funcione el final ), no es una expresión constante en el sentido de JLS: https://docs.oracle.com/javase/specs/jls/se8/html/jls- 15.html#jls-15.28