为什么花括号没有在Java中定义单独的本地范围?我期望这是主要花括号语言(C,C ++,Java,C#)所共有的功能。
class LocalScopeTester { public static void main(String... args) { Dog mine = new Dog("fido"); if (mine.getName().equals("ace")) { Dog mine = new Dog("spot"); // error: duplicate local } else { Dog mine = new Dog("barkley"); // error: duplicate local { Dog mine = new Dog("boy"); // error: duplicate local } } } }
它们确实定义了单独的局部作用域,但是您仍然不能从父作用域中屏蔽局部变量(但是您当然可以屏蔽实例变量)。
但是您可以定义新变量(使用不同的名称),并且它们的范围将限于括号内。