簡體   English   中英

Java:從Singleton Holder模式生成的多個內部類

[英]Java: multiple inner classes generated from Singleton Holder pattern

我有一個非常簡單的單例,它使用了holder模式(我只顯示了模式,沒有顯示其他細節):

public class Foo
{
    private static class FooHolder
    {
        private static final Foo INSTANCE = new Foo();
    }

    public static Foo getInstance()
    {
        return FooHolder.INSTANCE;
    }
}

當我通過Eclipse 1.6 compiler編譯此類時,它將生成兩個類: Foo.classFoo$FooHolder.class 但是,當我通過MavenJDK 1.6 compiler對其進行JDK 1.6 compiler ,它將生成一個附加類: Foo$1.class ,該類幾乎是空的。

我試圖理解為什么會這樣。 由於限制,我無法提供有關代碼的更多詳細信息。

盡管Java允許訪問同一.java中其他類的私有成員,但JVM不支持此功能。

相反,編譯器生成的代碼將通過生成的訪問器方法(例如access $ 010()或生成的子類)對這些成員進行秘密訪問。 每個編譯器的確切實現方式是實現細節。

我很確定Oracle JDK 7不會這樣做。

順便說一句,使用枚舉代替世界更簡單,創建更少的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM