以下方法不起作用,因为内部块声明了一个与外部块中的变量同名的变量。显然变量属于声明它们的方法或类,而不是声明它们的块,因此我不能编写一个简短的小临时块进行调试,碰巧将外部范围内的变量推入影子只是片刻:
void methodName() {
int i = 7;
for (int j = 0; j < 10; j++) {
int i = j * 2;
}
}
几乎我用过的所有块级语言都支持这一点,包括我在学校编写的解释器和编译器的琐碎小语言。Perl 可以做到这一点,Scheme 也可以,甚至 C 也可以。甚至 PL/SQL 也支持这一点!
这个 Java 设计决策的基本原理是什么?
编辑:正如有人指出的那样,Java 确实有块作用域。我要问的概念的名称是什么?我希望我能从那些语言设计课程中记住更多。:)