如果.java
文件具有多个顶级类,则它可以恰好具有一个顶级公共类,而所有其他顶级类都不能是公共的。
当我编译这样的.java
文件(例如javac my.java
)时,我发现每个顶级类都创建了一个.class
文件。由于除了一个顶级类以外的所有其他类都是非公开的,为什么仍为每个非公开的顶级类创建一个.class
文件?
谢谢。
最佳答案
从JVM spec:
每个类文件都包含单个类,接口或模块的定义。
可见性不会对此产生影响。
如果.java
文件具有多个顶级类,则它可以恰好具有一个顶级公共类,而所有其他顶级类都不能是公共的。
当我编译这样的.java
文件(例如javac my.java
)时,我发现每个顶级类都创建了一个.class
文件。由于除了一个顶级类以外的所有其他类都是非公开的,为什么仍为每个非公开的顶级类创建一个.class
文件?
谢谢。
最佳答案
从JVM spec:
每个类文件都包含单个类,接口或模块的定义。
可见性不会对此产生影响。