为什么修饰符在它们似乎什么都不做的时候被允许?

man*_*unk 9 java eclipse

我可以使用修饰符声明以下包,但它似乎对任何事情都没有任何影响:

private public protected static final package com.stackoverflow.mangodrunk

// ...
class Whatever {
    // ...
}  
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,在包去除之前添加修饰符会做什么,为什么编译器会允许它?

更新:似乎与Eclipse捆绑在一起的编译器存在问题,正如其他人提到的那样,这是使用Sun JDK的编译器错误.

Dra*_*mon 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
Run Code Online (Sandbox Code Playgroud)