为什么 java 编译器会为单个 java File 生成多个 .class 文件?
我写了一些java代码 Deadlock.java ,在编译它时它生成了多个名为 Deadlock$someNumber.class 的类。
为什么会发生这种情况.??
它有什么意义??
为什么 java 编译器会为单个 java File 生成多个 .class 文件?
我写了一些java代码 Deadlock.java ,在编译它时它生成了多个名为 Deadlock$someNumber.class 的类。
为什么会发生这种情况.??
它有什么意义??
如果您在同一个文件中有多个类(其中一个是必需的公共类并且与该文件具有相同的名称),请说在您的 Person.java 文件中,您有以下内容
public class Person{
}
class Classroom{
}
编译器将为文件 Person.java 中的每个类创建一个类
这些是匿名类。您的代码包含类似new SomeInterface(){}
和/或new SomeClass(){}
.
我相信当你使用匿名内部类时它通常会这样做。这些类中的每一个都将获得一个类文件,但是当您没有为它们声明名称时,它会获得一个数字。因此,您创建的任何未命名的类声明(可能是 Runnable 或 Listeners 等)可能正在创建这些声明。