gpt4 book ai didi

Java:从 Singleton Holder 模式生成多个内部类

转载 作者:行者123 更新时间:2023-11-30 03:44:35 26 4
gpt4 key购买 nike

我有一个非常简单的单例,它使用持有者模式(我只显示了模式,没有其他细节):

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

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

当我通过Eclipse 1.6编译器编译这个类时,它生成两个类:Foo.classFoo$FooHolder.class。但是当我通过 Maven 和 JDK 1.6 编译器编译它时,它会生成一个额外的类: Foo$1.class ,并且该类几乎是空的.

我试图理解为什么会发生这种情况。由于限制,我无法提供有关代码的更多详细信息。

最佳答案

虽然 java 允许访问同一 .java 中其他类的私有(private)成员,但 JVM 不支持这一点。

相反,编译器会生成代码,通过生成的访问器方法(例如 access$010() 或生成的子类)对这些成员进行 secret 访问。每个编译器到底如何做是一个实现细节。

我非常确定 Oracle JDK 7 不会执行此操作。

顺便说一句,使用枚举代替世界会更简单并创建更少的类。

关于Java:从 Singleton Holder 模式生成多个内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com