Java“重复的局部变量” - 是在 Java 还是 Eclipse 中抛出的错误?

scu*_*bbo 4 java eclipse

在以下代码中:

private static void example() {
    String inputString = "test";
    switch (inputString) {
        case "test":
            String outputString = "The string said test";
        case "not test":
            String outputString = "The string did not say test";
    }
    /*Do stuff with ouputString*/        
}
Run Code Online (Sandbox Code Playgroud)

Eclipse 突出显示Case "not test"错误后的行Duplicate local variable outputString。但是,由于它们位于switch语句的不同分支中,因此它们实际上并不冲突,因为一次只能有一个有效。

显然,在这种情况下,我可以通过将outputString声明移到switch语句之外来解决这个问题。但是,在更复杂的程序中,解决方案可能并不那么简单。

这仅仅是 Eclipse 为防止糟糕的编程技术而抛出的错误,还是实际的 Java 错误?

我对 Java 很陌生,所以如果这是一个新手问题,我很抱歉 - 我有一个关于“重复局部变量 Java”的谷歌,但到目前为止,所有出现的都是人们寻求帮助来解决问题(通常的解决方案是重命名其中一个变量),而不是讨论问题本身。

gre*_*ker 5

java中switch语句的每种情况下的变量范围都是整个switch语句。

您可以通过添加大括号来创建更多嵌套范围,如下所示:

 switch (inputString) {
        case "test": {
            String outputString = "The string said test";
            break;
        }
        case "not test": {
            String outputString = "The string did not say test";
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)