回答

6

編譯器提取內部類和創建es分別爲每個文件分配*class文件。內部類名稱創建爲OuterClassName$InnerClassName。匿名內部類沒有名稱,因此它們的名稱創建爲OuterClassName$1OuterClassName$2等。

內部類使用語法OuterClassName.this特別引用外部類的實例。

由於內部類被編譯爲單獨的類文件,因此JVM根本不處理內部類。它涉及具有上述「特殊」名稱的常規課程。

+0

+1清楚解釋 –

+1

+1值得注意的是,雖然Java支持訪問相同外部類的私有成員的嵌套類,但JVM不支持。編譯器所做的就是添加accessor方法,使用「access $ 100」這樣的名稱來授予類訪問私有字段,方法和共享相同外部類的其他類的構造方法的權限。如果您在調用堆棧中看到這些奇怪的方法之一,這就是它的意思。 –