¿Por qué Java no tiene declaraciones de variables de ámbito de bloque?

El siguiente método no funciona porque el bloque interno declara una variable del mismo nombre que una en el bloque externo. Aparentemente, las variables pertenecen al método o la clase en la que se declaran, no al bloque en el que se declaran, por lo tanto, no puedo escribir un pequeño bloque temporal para la depuración que suceda para empujar una variable en el ámbito externo hacia afuera. sombra solo por un momento

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

Casi todos los lenguajes de ámbito de bloque que he usado apoyan esto, incluidos pequeños lenguajes triviales para los que escribí intérpretes y compiladores en la escuela. Perl puede hacer esto, al igual que Scheme, e incluso C. ¡Incluso PL / SQL lo admite!

¿Cuál es la razón para esta decisión de diseño para Java?

Edición: como alguien señaló, Java tiene un ámbito de bloque. ¿Cuál es el nombre del concepto que estoy preguntando? Ojalá pudiera recordar más de esas clases de diseño de idiomas. :)

Respuestas a la pregunta(6)

Su respuesta a la pregunta