2012-07-18 31 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,然後加載這些類文件並執行)

相關問題