假设我在同一个文件中有两个类(公共类和私有类)的A.java。
public class A{
public static void main(string[] args){
...
}
}
class B{
...
}
为什么Java在编译A.java时会自动自动创建A.class和B.class?
是否要避免这类问题? https://stackoverflow.com/a/2336762/2034015
如果Foo.java引用Baz而不是Bar,会发生什么,我们会尝试 编译Foo.java?编译失败,出现如下错误:
Foo.java:2:找不到符号符号:class Baz location:class Foo 私人Baz baz; ^ 1错误
另外,我知道使用Java的正确方法是每个类的文件,但我想知道为什么Java会这样做。
答案 0 :(得分:4)
Java的工作原理是从您的源代码生成的.class文件。每个文件只能有一个公共类,但是许多其他类(包括内部/匿名/静态等 - 内部类的名称前面有$
,前面是外部类,匿名只有$
之后的数字)一个文件仍然会被编译为更多的类。因此关系为source file
:byte-code file
- 1 : n
。