Warum hat Java keine blockspezifischen Variablendeklarationen?

Die folgende Methode funktioniert nicht, da der innere Block eine Variable mit demselben Namen wie die im äußeren Block deklariert. Anscheinend gehören Variablen zu der Methode oder Klasse, in der sie deklariert sind, und nicht zu dem Block, in dem sie deklariert sind. Daher kann ich keinen kurzen temporären Block zum Debuggen schreiben, in den eine Variable im äußeren Gültigkeitsbereich verschoben wird Schatten nur für einen Moment:

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

Fast jede blockbasierte Sprache, die ich jemals verwendet habe, hat dies unterstützt, einschließlich trivialer kleiner Sprachen, für die ich in der Schule Dolmetscher und Compiler geschrieben habe. Perl kann dies ebenso wie Scheme und sogar C. Sogar PL / SQL unterstützt dies!

Was ist der Grund für diese Entwurfsentscheidung für Java?

Bearbeiten: Wie jemand darauf hingewiesen hat, hat Java Block-Scoping. Wie heißt das Konzept, nach dem ich frage? Ich wünschte, ich könnte mich an mehr aus diesen Kursen für Sprachdesign erinnern. :)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage