2010-01-24 11 views
9

que puede declarar el siguiente paquete con modificadores pero no parece tener ningún efecto sobre cualquier cosa:¿Por qué se permiten modificadores para un paquete cuando parece que no hacen nada?

private public protected static final package com.stackoverflow.mangodrunk 

// ... 
class Whatever { 
    // ... 
} 

Así que mi pregunta es, ¿la adición de un modificador antes de que un paquete de decleration hacer cualquier cosa y por qué sería permitido por el compilador?

Actualización: Parece ser un problema con el compilador incluido con Eclipse, ya que otros han mencionado que se trata de un error del compilador utilizando Sun's JDK.

+0

Mierda, tienes razón, el compilador Eclipse compila esta bien .... – skaffman

+0

Esto es un error bastante menor, pero si desea informar de ello, puede hacerlo aquí : https://bugs.eclipse.org/bugs/ – McDowell

Respuesta

7

No lo son. ¿Qué compilador estás usando?

$ javac com/stackoverflow/mangodrunk/Whatever.java 

com/stackoverflow/mangodrunk/Whatever.java:1: class, interface, or enum expected 
private public protected static final package com.stackoverflow.mangodrunk; 
            ^
1 error 
+0

Estoy usando JDK 1.6.0_17, y tiene razón, tiene un error de compilación cuando intento compilarlo usando javac. Pero bajo eclipse no hay problema. – mangoDrunk

+1

¿Qué dice eso sobre el Eclipse JDK? – duffymo

+0

Probablemente un error menor en su gramática que hace que ignore * cualquier cosa * antes de "paquete", no solo comentarios. Vea si otras palabras clave también son ignoradas. Supongo que deberías reportar el error a menos que ya se haya informado. – Draemon

4

De acuerdo con el JLS, la única cosa que puede preceder a package es una anotación.

PackageDeclaration: 
     Annotationsopt package PackageName ; 

Pero una anotación se parece a esto (la gramática completa omitido por razones de brevedad):

NormalAnnotation: 
     @ TypeName (ElementValuePairsopt) 

Así que el compilador no se debe permitir modificadores de acceso estándar.

Fuente: http://java.sun.com/docs/books/jls/third_edition/html/packages.html

Cuestiones relacionadas