【发布时间】:2014-02-18 23:55:44
【问题描述】:
假设我有一个 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: 找不到符号 symbol : class Baz location: class Foo 私人巴兹巴兹; ^ 1 个错误
另外,我知道使用 Java 的正确方法是每个类一个文件,但我想知道 Java 为什么要这样做。
【问题讨论】:
-
java 这样做是因为它是每个类的一个类文件,而不管它们的公共/私有属性如何。内部类被称为
outer$inner,匿名类被称为outer$number。 -
同意,每个文件一个类。内部类获得 $ 语法,并且需要先实例化前面类的实例,然后才能实例化 $ 后面的类型之一。 (内部类需要引用包含类型)
-
这就是 javac 的作用。有两个类,因此有两个类文件。
标签: java