<分区>
Possible Duplicate:
Variable scope in a switch case
我有这样的代码:
switch(a) {
case b:
Object o = new Object();
return o;
case c:
o = new Object();
return o;
}
我很感兴趣,为什么即使永远不会达到第一个状态,也可以在第二个中使用在第一个 case 标签之后声明的变量?
标签 java
<分区>
Possible Duplicate:
Variable scope in a switch case
我有这样的代码:
switch(a) {
case b:
Object o = new Object();
return o;
case c:
o = new Object();
return o;
}
我很感兴趣,为什么即使永远不会达到第一个状态,也可以在第二个中使用在第一个 case 标签之后声明的变量?
最佳答案
尽管在不同的情况下,switch
语句的局部变量在同一 block 中,这意味着它们在同一范围内。
据我所知,Java 中的新作用域仅在新代码块中创建。一段代码(不止一行)必须用花括号括起来。 switch 语句中的代码没有被大括号包围,因此它是整个语句作用域的一部分。
但是,您实际上可以通过添加大括号为语句引入新的作用域:
switch (cond) {
case 1:{
Object o = new Object();
}
break;
case 2:{
// Object o is not defined here!
}
break;
}
关于java - 为什么在一个案例标签之后声明的对象在其他案例中可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6041771/