切换局部变量编译错误

dur*_*597 2 java declaration switch-statement

为什么这是编译错误?Java无法同时达到这两种声明bar.

import java.util.Random;

public class SwitchTest {
  public static void main(String[] args) {
    Random r = new Random();
    int foo = r.nextInt(2);

    switch(foo) {
    case 0:
      int bar = r.nextInt(10);
      System.out.println(bar);
      break;
    case 1:
      int bar = r.nextInt(10) + 10; // Doesn't compile!!
      System.out.println(bar);
      break;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Jim*_*son 6

它们都在相同的词法范围内,这与执行可达性不同.

在每个内部的代码周围放置大括号case,它将工作.

  • @TJCrowder为什么不呢? (2认同)