为什么java编译器会为单个java文件生成多个.class文件? [重复]

问题描述 投票:0回答:3

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

我写了一些Java代码

Deadlock.java
,编译它生成了多个类 名为
Deadlock$someNumber.class
.

为什么会出现这种情况?

这有什么意义?

java class
3个回答
3
投票

如果同一个文件中有多个类(其中一个类必须是 public 并且与文件同名),请说在您的 Person.java 文件中,您有以下内容

    public class Person{
}
class Classroom{
}

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


2
投票

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


1
投票

这些是匿名类。您的代码包含类似

new SomeInterface(){}
和/或
new SomeClass(){}

© www.soinside.com 2019 - 2024. All rights reserved.