2010-01-24 11 views
9

posso dichiarare la seguente pacchetto con i modificatori, ma non sembra avere alcun effetto su qualsiasi cosa:Perché i modificatori sono consentiti per un pacchetto quando non sembrano fare nulla?

private public protected static final package com.stackoverflow.mangodrunk 

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

Quindi la mia domanda è, non l'aggiunta di un modificatore prima di un pacchetto decleration fare qualsiasi cosa e perché sarebbe permesso dal compilatore?

Aggiornamento: sembra essere un problema con il compilatore in bundle con Eclipse, come altri hanno menzionato, si tratta di un errore del compilatore che utilizza il JDK di Sun.

+0

Santa merda, hai ragione, il compilatore Eclipse compila questo bene .... – skaffman

+0

Questo è un abbastanza bug minore, ma se si vuole riferire, si può fare qui : https://bugs.eclipse.org/bugs/ – McDowell

risposta

7

Non lo sono. Quale compilatore stai 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

Sto usando JDK 1.6.0_17, e sei corretto, ha un errore del compilatore quando provo a compilarlo usando javac. Ma sotto Eclipse non ci sono problemi. – mangoDrunk

+1

Che cosa dice di Eclipse JDK? – duffymo

+0

Probabilmente un errore minore nella loro grammatica che fa sì che ignori * qualsiasi cosa * prima del "pacchetto" non solo dei commenti? Vedi se anche altre parole chiave sono ignorate. Immagino che dovresti segnalare il bug a meno che non sia già stato segnalato. – Draemon

4

Secondo il JLS, l'unica cosa che può precedere package è un'annotazione.

PackageDeclaration: 
     Annotationsopt package PackageName ; 

Ma un'annotazione assomiglia a questo (grammatica completa omesse per brevità):

NormalAnnotation: 
     @ TypeName (ElementValuePairsopt) 

Quindi il compilatore non dovrebbe essere permettendo modificatori di accesso standard.

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

Problemi correlati