In che modo il compilatore Java gestisce il seguente blocco di switch? Qual è lo scopo della variabile 'b'?Switch Java: dichiarazione delle variabili e scope
Si noti che la variabile 'b' viene dichiarata solo nel primo ramo dell'istruzione switch. Anche il tentativo di dichiararlo nel secondo ramo genera un errore di compilazione "variabile locale duplicata".
int a = 3;
switch(a) {
case 0:
int b = 1;
System.out.println("case 0: b = " + b);
break;
case 1:
// the following line does not compile: b may not have been initialized
// System.out.println("case 1 before: b = " + b);
b = 2;
System.out.println("case 1 after: b = " + b);
break;
default:
b = 7;
System.out.println("default: b = " + b);
}
Nota: il codice sopra riportato viene compilato con un compilatore java 1.6.
Ho risposto alla tua domanda. – darrengorman