3

为什么 java 编译器会为单个 java File 生成多个 .class 文件?

我写了一些java代码 Deadlock.java ,在编译它时它生成了多个名为 Deadlock$someNumber.class 的类。

为什么会发生这种情况.??

它有什么意义??

4

3 回答 3

3

如果您在同一个文件中有多个类(其中一个是必需的公共类并且与该文件具有相同的名称),请说在您的 Person.java 文件中,您有以下内容

    public class Person{
}
class Classroom{
}

编译器将为文件 Person.java 中的每个类创建一个类

于 2013-03-29T15:54:48.730 回答
1

这些是匿名类。您的代码包含类似new SomeInterface(){}和/或new SomeClass(){}.

于 2013-03-29T15:49:58.073 回答
1

我相信当你使用匿名内部类时它通常会这样做。这些类中的每一个都将获得一个类文件,但是当您没有为它们声明名称时,它会获得一个数字。因此,您创建的任何未命名的类声明(可能是 Runnable 或 Listeners 等)可能正在创建这些声明。

于 2013-03-29T15:50:40.347 回答