据我所知单例设计模式意味着我们只能创建一个类的单对象

以下代码成功运行,没有任何错误/异常。

我期望代码失败,因为SingletonExample类具有私有的默认构造函数。

public class SingletonExample {
    private static SingletonExample singletonInstance;

    private SingletonExample() {
    }

    public static SingletonExample getSingletonInstance() {
        if (null == singletonInstance) {
            System.out.println("Creating new instance");
            singletonInstance = new SingletonExample();
        }
        return singletonInstance;
    }

    public void printSingleton(){
        System.out.println("Inside print Singleton");
    }

    public static void main(String a[])  {
        SingletonExample singObj1 = new SingletonExample();
        SingletonExample singObj2 = new SingletonExample();
    }
}

我的代码有问题吗?

最佳答案

因为您的main方法在SingletonExample类中,所以main代码可以访问私有构造函数。

尝试将main方法移动到另一个类。

08-27 14:43