Следующий метод не работает, потому что внутренний блок объявляет переменную с тем же именем, что и во внешнем блоке. По-видимому, переменные принадлежат к методу или классу, в котором они объявлены, а не к блоку, в котором они объявлены, поэтому я поэтому не могу написать небольшой небольшой временный блок для отладки, который происходит, чтобы вставить переменную во внешнюю область в тень на мгновение:
void methodName() {
int i = 7;
for (int j = 0; j < 10; j++) {
int i = j * 2;
}
}
Почти каждый язык с ограниченным блоком, который я когда-либо использовал, поддерживал это, в том числе тривиальные небольшие языки, на которых я писал интерпретаторы и компиляторы в школе. Perl может это сделать, как и схема, и даже C. Даже PL/SQL поддерживает это!
Какое обоснование для этого решения для Java?
Изменить: как заметил кто-то, у Java есть блок-область. Как зовут концепцию, о которой я спрашиваю? Хотелось бы, чтобы я больше помнил эти классы по языковому дизайну.:)