繁体   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