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