2010-01-24 15 views
9

Ben Düzenleyici kullanılan aşağıdaki paketi ilan edebilir ama bir şey üzerinde herhangi bir etkisi görünmüyor:Bir paketin neden bir şey yapmıyor gibi görünmesine neden izin verilir?

private public protected static final package com.stackoverflow.mangodrunk 

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

Benim soru, bir paket ilanından önce bir değiştirici bir şey yapmak ve yok neden olsun ki edilir derleyici tarafından izin verilir?

Güncelleştirme: Sunucunun JDK'sini kullanan bir derleyici hatası olduğundan bahsettiğimiz gibi, Eclipse ile birlikte gelen bir derleyici ile ilgili bir sorun gibi görünüyor.

+0

Kahretsin, haklısın, Eclipse derleyici Bu oldukça küçük hata olduğunu, ancak bunu raporlamak istiyorsanız, buradan yapabilirsiniz .... – skaffman

+0

gayet bu derler : https://bugs.eclipse.org/bugs/ – McDowell

cevap

7

Değiller. Hangi derleyiciyi kullanıyorsunuz?

$ 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

JDK 1.6.0_17 kullanıyorum ve doğru, javac kullanarak derlemeye çalıştığımda bir derleyici hatası var. Ama tutulma altında sorun yok. – mangoDrunk

+1

Eclipse JDK hakkında ne diyor? – duffymo

+0

Muhtemelen gramerlerinde küçük bir hata, sadece “yorum” dan değil, “paket” den önce * bir şey * göz ardı edilmesine neden olur mu? Diğer anahtar kelimelerin de dikkate alınmadığını görün. Zaten rapor edilmemişse, hatayı rapor etmelisin. – Draemon

4

JLS göre, package önce tek şey bir açıklama olduğunu.

PackageDeclaration: 
     Annotationsopt package PackageName ; 

Ama bir ek açıklama bu (kısaca geçilmiştir tam dilbilgisi) gibi görünür:

NormalAnnotation: 
     @ TypeName (ElementValuePairsopt) 

Yani derleyici standart erişim değiştiricileri izin verilmemelidir.

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

İlgili konular