2010-04-27 20 views
13

he estado programando en Java por un tiempo, y yo he encontrado con esta sintaxis, por primera vez:¿Cuándo colocaría un punto y coma después de un método de cierre de llave?

public Object getSomething(){return something;}; 

Lo que me es interesante es el punto y coma final. No parece estar causando un error de compilación, y hasta donde yo sé, no está generando errores de tiempo de ejecución, por lo que parece ser una sintaxis válida. ¿Cuándo usaría esta sintaxis? ¿O es algo que está permitido pero que generalmente no se usa?

+1

nota: lo mismo se aplica a las clases: puede terminarlas con ';' en 'C++' -style; es útil cuando se usa código directamente portado. – vaxquis

Respuesta

17

Está permitido por la gramática como una concesión a errores de sintaxis inofensivos, pero no se usa generalmente y no significa nada diferente (que dejar el punto y coma fuera).

Así como un };dentro un método (tal como después de un bloque de if) es una declaración nula y se permite, un punto y coma andante fuera un método se considera una declaración nulo y está permitido.

En concreto, la siguiente producción de la Java Language Specification permite esto:

ClassBodyDeclaration: 
    ; 
    [static] Block 
    ModifiersOpt MemberDecl 
11

Es simplemente una declaración vacía: es muy probable que sea un error tipográfico.

Considere el hecho de que en todos los lenguajes basados ​​en C, una declaración termina con un punto y coma. Un punto y coma colgante como este simplemente termina la declaración actual que en este caso no es nada.

+0

¿Podría técnicamente agregar cualquier número de punto y coma en cualquier lugar que no sea el medio de una declaración? – froadie

+3

@froadie - Sí, podrías hacer eso. –

8

o es sólo algo que está permitido, pero generalmente no se usa?

Yeap, eso es todo. Es válido Java pero no hace nada:

public class X { 
    ;;;;;;;;;;;;;;;;;; 
    ;;;;; 
    ; 
} 
Cuestiones relacionadas