2010-04-27 2 views
13

Ich habe eine Zeit lang in Java wurde Programmierung, und ich habe gerade über diese Syntax zum ersten Mal kommen:Wann würden Sie ein Semikolon nach einer Methode schließen Klammer?

public Object getSomething(){return something;}; 

Was mir das letzte Semikolon ist interessant. Es scheint keinen Compilerfehler zu verursachen, und soweit ich weiß, erzeugt es keine Laufzeitfehler, daher scheint es eine gültige Syntax zu sein. Wann würde ich diese Syntax verwenden? Oder ist es nur etwas, das erlaubt ist, aber im Allgemeinen nicht benutzt wird?

+1

Hinweis: das gleiche gilt für Klassen - Sie können sie beenden mit ';' in 'C++' -Stil; ist praktisch, wenn Sie direkt portierten Code verwenden. – vaxquis

Antwort

17

Es ist erlaubt durch die Grammatik als Zugeständnis an harmlose Syntaxfehler, aber es ist nicht allgemein verwendet und bedeutet nichts anderes (als das Semikolon verlassen).

So wie ein };innen Verfahren (wie beispielsweise nach einem if Block) eine Null-Anweisung ist und zugelassen wird, eine fehlerhafte Semikolon außerhalb Verfahren einer Null Erklärung betrachtet wird und zugelassen wird.

Insbesondere die folgende Produktion aus den Java Language Specification ermöglicht dies:

ClassBodyDeclaration: 
    ; 
    [static] Block 
    ModifiersOpt MemberDecl 
11

Es ist einfach eine leere Aussage - es ist höchstwahrscheinlich ein Tippfehler.

Bedenken Sie, dass in allen C-basierten Sprachen eine Anweisung mit einem Semikolon abgeschlossen wird. Ein hängendes Semikolon beendet einfach die aktuelle Aussage, die in diesem Fall nichts ist.

+0

Also könnte ich technisch beliebig viele Semikola irgendwo anders als die Mitte einer Aussage hinzufügen? – froadie

+3

@froadie - Ja, das könntest du tun. –

8

Oder ist es nur etwas, das erlaubt ist, aber in der Regel nicht verwendet?

Yeap, das ist es. Es ist gültig Java aber tut nichts: