Dlaczego Java nie ma deklaracji zmiennych o zasięgu bloku?

Następująca metoda nie działa, ponieważ blok wewnętrzny deklaruje zmienną o tej samej nazwie, co zmienna w bloku zewnętrznym. Najwyraźniej zmienne należą do metody lub klasy, w której są zadeklarowane, a nie do bloku, w którym są zadeklarowane, dlatego nie mogę napisać krótkiego, małego tymczasowego bloku do debugowania, co zdarza się w przypadku wypchnięcia zmiennej w zewnętrznym zakresie do cień tylko na chwilę:

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

Prawie każdy język blokowy, z którego korzystałem, wspierał to, w tym trywialne małe języki, które pisałem dla tłumaczy i kompilatorów w szkole. Perl może to zrobić, podobnie jak Scheme, a nawet C. Nawet PL / SQL to obsługuje!

Jakie jest uzasadnienie tej decyzji projektowej dla Java?

Edytuj: jak ktoś zauważył, Java ma zasięg blokowania. Jak nazywa się koncepcja, o którą pytam? Szkoda, że ​​nie pamiętam więcej z tych lekcji projektowania językowego. :)

questionAnswers(6)

yourAnswerToTheQuestion