Java:自动为每个类创建一个.class文件

zur*_*fyx 0 java

假设我有一个 A.java,其中两个类(公共类和私有类)都位于同一文件中。

public class A{
    public static void main(string[] args){
        ...
    }
}

class B{
    ...
}
Run Code Online (Sandbox Code Playgroud)

为什么Java在编译A.java时会自动创建A.class和B.class?

是为了避免此类问题吗?/sf/answers/163573371/

如果 Foo.java 引用 Baz 而不是 Bar,并且我们尝试编译 Foo.java,会发生什么情况?编译失败并出现如下错误:

Foo.java:2:找不到符号符号:class Baz 位置:class Foo private Baz baz;^ 1 个错误

另外,我知道使用 Java 的正确方法是每个类一个文件,但我想知道为什么 Java 这样做。

dev*_*ull 5

Java 的工作原理是从源代码生成的 .class 文件。每个文件只能有一个公共类,但一个文件中可以有许多其他类(包括内部/匿名/静态等 - 内部类的$名称前面有外部类,匿名类后面只有数字$),并且它仍然会被编译为更多类。所以关系是 source filebyte-code file- 1 : n