如果.java
文件具有多个顶级类,则可以完全拥有一个顶级公共类,并且所有其他顶级类都不能公开。
当我编译这样的.java
文件(例如javac my.java
)时,我发现每台顶级类都创建了.class
文件。由于除了一个顶级类以外的所有除外都是非公开的,所以为什么仍然为每个非公共顶级类创建一个.class
文件?
谢谢。
来自JVM规格:
每个类文件包含单个类,接口或模块的定义。
可见性不会影响这一点。
轻率的答案是"您希望它能做什么?"每个.class文件包含供JVM执行的字节码,Java规范要求代码中定义的每个类都成为.class文件。
更一般地 - 请记住,班级(公共,私人,内在,匿名,任何...)的可见性是由编译器和JVM执行的。不是通过文件的可见性或存在。