我对Java并不陌生,但这是我从未见过的事情。
假设有一个switch的情况,在情况0中声明一个变量会使该变量在其他情况下可见,这很奇怪,我认为这不是Java风格。
public static void main(String[] args) {
String _case = "case";
switch (_case) {
case "1":
String foo = "foo";
break;
case "2":
String bar = "bar";
break;
case "case":
foo = "foo";
System.out.println(foo);
// System.out.println(bar); //Variable bar might not have been initialized
break;
}
}
如果案例1
未得到验证,为什么String foo
变量为何以及如何被声明?
Execute在线代码
答案 0 :(得分:0)
由于您在最后一种情况下设置了foo = "foo"
,因此可以确保在该点实例化该变量。在最后一种情况下,没有时间实例化bar
,从而给您带来此错误。这是由于在某种情况下变量的范围等于整个switch语句的范围。有关other questions about this