К моему удивлению этот код хорошо работает:
int i = 2;
switch(i) {
case 1:
String myString = "foo";
break;
case 2:
myString = "poo";
System.out.println(myString);
}
Но Строковая ссылка никогда не должна объявляться? Могло случиться так, что все переменные под каждым случаем всегда объявляются тем независимо от того, что, или как это разрешено?
Ну, дело в скобках (то есть в размахе).
Возможно, лучше будет писать ваши операторы следующим образом:
int i = 2;
switch(i) {
case 1: {
String myString = "foo";
break;
}
case 2: {
myString = "poo";
System.out.println(myString);
}
}
(Я сейчас не рядом с компилятором Java, но он не должен компилироваться).
Область объявления myString - это блок переключения (где находится символ {). Если бы вы написали это так, объявление было бы для каждого случая:
int i = 2;
switch(i) {
case 1: {
String myString = "foo";
break;
}
case 2: {
String myString = "poo";
System.out.println(myString);
}
}