2012-07-18 26 views
0

可能重复:
Compiler is creating extra class files with $ in them为什么JVM在编译后创建很多类文件?

我使用NetBeans设计中,我使用的Java Swing因此除了Java源代码的Java应用程序,我将有.FORM文件,这包含有关Java表单的描述。

在SRC diectory,我有3个文件,如,

Downloader.java 
DownloadCore.java 
Downloader.form 

现在,如果我编译它们使用手动命令提示符(.IE不使用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文件。为什么需要?

在此先感谢

+0

当你罐子你程序你仍然得到只有一个罐子,所以它不像看起来那么混乱。 – 2012-07-18 05:51:06

回答

5

每个类都有自己的.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,然后加载这些类文件并执行)

相关问题