Java单例内部类

zme*_*eda 4 java singleton inner-classes

我知道Java中单例的概念.我在使用Java创建单例作为内部类时遇到了问题.持有人出现问题

public class NormalClass {
    private class Singleton {
        private static Singleton instance = null;

        private Singleton() {
        }

        private static class SingletonHolder {
            private static Singleton sessionData = new Singleton();
        }

        public static Singleton getInstance() {
            return NormalClass.Singleton.SingletonHolder.sessionData;
        }
    }

    public void method1() {
        Singleton.getInstance();
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是在新的Singleton()构造函数调用.如何正确调用Singleton的私有构造函数作为内部类?

问候

Rob*_*bin 7

如果它应该是一个真正的单例,请使你的单例类静态.然后你就可以调用构造函数了.

Java嵌套类教程中解释了构造函数调用不起作用的原因.基本上,内部类在构造之前需要外部类的实例:

private static Singleton sessionData = new NormalClass().new Singleton();
Run Code Online (Sandbox Code Playgroud)