gpt4 book ai didi

java - 为什么JVM编译后会产生大量的class文件?

转载 作者:行者123 更新时间:2023-12-01 17:30:28 25 4
gpt4 key购买 nike

Possible Duplicate:
Compiler is creating extra class files with $ in them

我正在使用 Netbeans 设计一个 Java 应用程序,其中使用 Java Swing,因此除了 Java 源文件之外,我还将拥有 .form 文件,其中包含有关 Java 表单的描述。

在 src 目录中,我有 3 个文件,例如,

Downloader.java
DownloadCore.java
Downloader.form

现在,如果我使用命令提示符手动编译它们(即不使用 Netbeans),那么我会得到很多 .class 文件,例如,

DownloadCore.class
Downloader$1.class
Downloader$10.class
Downloader$11.class
Downloader$12$1.class
Downloader$12.class
Downloader$2.class
Downloader$3.class
Downloader$4.class
Downloader$5.class
Downloader$6.class
Downloader$7.class
Downloader$8.class
Downloader$9.class
Downloader.class

我想知道为什么 JVM 创建这么多 .class 文件,其中我只有 2 个 .java 文件,所以它不应该单独创建 2 个 .class 文件。为什么需要它?

提前致谢

最佳答案

每个类都有自己的.class 文件——甚至是匿名文件。例如:

// "top level" class -- in MyWhatever.java
public class MyWhatever {

// anonymous class
public static final Runnable anonymousRunnable = new Runnable() {
@Override
public void run() {
System.out.println("I am an anonymous Runnable.");
}
}

}

这段代码定义了两个类——MyWhateveranonymousRunnable的匿名类。第二个将被称为 MyWhatever$1,这就是您所看到的。它们中的每一个都有自己的 .class 文件。

(顺便说一句,创建这些类文件的不是 JVM,而是 Java 编译器,如 javac 或 Netbeans 使用的任何东西。然后 JVM 加载这些类文件并执行它们。)

关于java - 为什么JVM编译后会产生大量的class文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com