爲什麼java編譯器爲單個java文件生成多個.class文件?爲什麼java編譯器爲單個java文件生成多個.class文件?
我寫了一些java代碼Deadlock.java,編譯時它生成了多個類 命名爲Deadlock $ someNumber.class。
爲什麼會發生這種情況。
它的意義是什麼?
爲什麼java編譯器爲單個java文件生成多個.class文件?爲什麼java編譯器爲單個java文件生成多個.class文件?
我寫了一些java代碼Deadlock.java,編譯時它生成了多個類 命名爲Deadlock $ someNumber.class。
爲什麼會發生這種情況。
它的意義是什麼?
我相信它通常會這樣做,當你使用匿名內部類。這些類中的每一個都會得到一個類文件,但是當你聲明沒有名字時,它會得到一個數字。因此,您創建的任何未命名的類聲明(可能用於Runnable或Listener等)可能會創建這些聲明。
一個匿名類將生成'Deadlock $ .class'文件 –
這些是匿名類。您的代碼包含類似new SomeInterface(){}
和/或new SomeClass(){}
。
這不是匿名類的結果。 –
如果你有幾類在同一個文件(其中一個是必要的公共和具有相同名稱的文件),說你Person.java文件中,您有以下
public class Person{
}
class Classroom{
}
編譯器將爲文件Person.java中的每個類創建一個類
不一定是好友,一個類必須調用另一個才能生成xxxx $ xxx.class。以上僅僅創建了2個獨立的類文件,即使它們是在單個文件中定義的。你需要在其他類中定義類:public class Person {} class Classroom {Person p = new Person(){private void someMethod(){}};}' – Jops
因爲您在文件中定義了其他類,如非公共類,內部類,匿名類...... –