2013-03-29 109 views
1

爲什麼java編譯器爲單個java文件生成多個.class文件?爲什麼java編譯器爲單個java文件生成多個.class文件?

我寫了一些java代碼Deadlock.java,編譯時它生成了多個類 命名爲Deadlock $ someNumber.class。

爲什麼會發生這種情況。

它的意義是什麼?

+2

因爲您在文件中定義了其他類,如非公共類,內部類,匿名類...... –

回答

0

我相信它通常會這樣做,當你使用匿名內部類。這些類中的每一個都會得到一個類文件,但是當你聲明沒有名字時,它會得到一個數字。因此,您創建的任何未命名的類聲明(可能用於Runnable或Listener等)可能會創建這些聲明。

+1

一個匿名類將生成'Deadlock $ .class'文件 –

0

這些是匿名類。您的代碼包含類似new SomeInterface(){}和/或new SomeClass(){}

+0

這不是匿名類的結果。 –

2

如果你有幾類在同一個文件(其中一個是必要的公共和具有相同名稱的文件),說你Person.java文件中,您有以下

public class Person{ 
} 
class Classroom{ 
} 

編譯器將爲文件Person.java中的每個類創建一個類

+0

不一定是好友,一個類必須調用另一個才能生成xxxx $ xxx.class。以上僅僅創建了2個獨立的類文件,即使它們是在單個文件中定義的。你需要在其他類中定義類:public class Person {} class Classroom {Person p = new Person(){private void someMethod(){}};}' – Jops

相關問題