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