java - 为什么在一个案例标签之后声明的对象在其他案例中可用?

标签 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/

相关文章:

java - 在 Java 中避免依赖 hell 的首选步骤是什么?

java - 验证旧 CSV 文件中的信息后打印写入新 CSV 文件并将 DATA INFILE 加载到 MySQL 中

java - PropertiesConfiguration - 在属性值中使用 "/"

java - java中一个线程的输入来自另一个线程的无限等待

Java Swing BasicUI 更新错误,我该怎么办?

java - 将随机数更改为 key 代码

java - 显示隐藏字段的 validator 消息

用于字节操作的 Java RandomAccessFile 与 DataInputStream

java - JLabel 太宽

java - 安装 Apache Maven