我可以使用修饰符声明以下包,但它似乎对任何内容都没有任何影响:
private public protected static final package com.stackoverflow.mangodrunk
// ...
class Whatever {
// ...
}
所以我的问题是,在包去除之前添加一个修饰符会做什么,为什么编译器会允许它?
更新:似乎与Eclipse捆绑在一起的编译器存在问题,正如其他人提到的那样,这是使用Sun JDK的编译器错误。
答案 0 :(得分:7)
他们不是。您使用的是哪种编译器?
$ 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
答案 1 :(得分:4)
根据JLS,package
之前唯一可以注释的是。
PackageDeclaration: Annotationsopt package PackageName ;
但注释看起来像这样(为简洁省略了完整的语法):
NormalAnnotation: @ TypeName ( ElementValuePairsopt )
因此,您的编译器不应该允许标准访问修饰符。
来源:http://java.sun.com/docs/books/jls/third_edition/html/packages.html