为什么你想要一个没有声明公共类的Java文件?

Jim*_*mmy 29 java class

在我正在阅读SCJP资格的书中有一个声明,它说:

没有公共类的文件没有命名限制

这让我问,你为什么要这样做?

如果没有公共类,那么其他类如何导入和使用该文件呢?我能看到的唯一目的是文件本身是独立运行的,也可能是奇数,例如将整个应用程序放在一个文件中

Boz*_*zho 32

这对包私有类也有效.您可以在同一个包中使用package-private类.(在这种情况下,您不必导入它,因为它在同一个包中.)

例如,JapaneseImperialCalendar该类是package-private,因为它仅用于Calendar.createCalendar(..)- 它不是公共API的一部分.您不能直接实例化日历,但您仍然可以通过其界面使用它.对于通过类似方法获得的所有不可修改的集合也是如此Collections.unmodifiableList(..)- 它们是包私有的.

所以.java文件JapaneseImperialCalendar可能是任意的.但是,建议不要偏离在类名后命名甚至包私有文件的既定做法.