Почему в Java нет блочных деклараций переменных?

Следующий метод не работает, потому что внутренний блок объявляет переменную с тем же именем, что и во внешнем блоке. Очевидно, что переменные относятся к методу или классу, в котором они объявлены, а не к блоку, в котором они объявлены, поэтому я не могу написать небольшой небольшой временный блок для отладки, в результате которого переменная во внешней области видимости сбрасывается в тень на мгновение:

void methodName() {
  int i = 7;
  for (int j = 0; j < 10; j++) {
    int i = j * 2;
  }
}

Это поддерживал почти каждый язык с блочной областью, который я когда-либо использовал, включая тривиальные маленькие языки, для которых я писал интерпретаторы и компиляторы в школе. Perl может сделать это, как и Scheme, и даже C. Даже PL / SQL поддерживает это!

Каково обоснование этого дизайнерского решения для Java?

Редактировать: как кто-то указал, Java имеет блок-область видимости. Как называется концепция, о которой я спрашиваю? Хотел бы я вспомнить больше из этих уроков языкового дизайна. :)

Ответы на вопрос(6)

Ваш ответ на вопрос