Java-Label-Unregelmäßigkeit (möglicher Fehler?)

8

Wenn wir uns den Java-Standard §14.7 ansehen, sehen wir, dass Aussagen dazu führen können haben Label-Präfixe, zB:

  

LabeledStatement:

     

Bezeichner: Anweisung

Theoretisch sollte eine Beschriftung in der Lage sein, jede nachfolgende Anweisung zu kennzeichnen. So kompiliert zum Beispiel folgendes:

%Vor%

Intuitiv kompiliert dies auch:

%Vor%

Aber Folgendes wird nicht kompiliert:

%Vor%

Auch wenn dies der Fall ist (beachten Sie die Bereichsklammern):

%Vor%

Die Frage hängt also davon ab, ob Erklärungen Aussagen sind oder nicht. Laut dem Standard (und der Online-Dokumentation ):

  

Zusätzlich zu Ausdrucksanweisungen gibt es zwei andere Arten von Anweisungen: Deklarationsanweisungen und Steuerflussanweisungen. Eine Deklarationsanweisung deklariert eine Variable.

Ich habe dieses Verhalten in Java 7 und 8 sowohl auf OSX als auch auf Windows bemerkt. Ist das ein Fehler oder missverstehe ich den Standard?

    
David Titarenco 03.06.2015, 01:24
quelle

1 Antwort

8

Der Ausdruck

%Vor%

ist eine Deklarationserklärung für lokale Variablen .

Die statement wird in der Syntax einer Label-Anweisung

  

LabeledStatement :

     

Identifier : Statement

enthält keine Deklarationsanweisungen für lokale Variablen. Sie können sie daher nicht direkt in einer markierten Anweisung verwenden.

Lokale Deklarationsanweisungen können innerhalb von Blöcken , die in gekennzeichneten Aussagen verwendet werden können.

    
Sotirios Delimanolis 03.06.2015, 01:31
quelle

Tags und Links