如何停止创建单例实例

How to stop creating instance of Singleton

我有一个这样的单身人士class:

class Singleton {
    static class SingletonHolder {
        static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}

我可以从其他人那里这样打电话吗class:

Singleton dummy = new Singleton();

如果是,我该如何禁用它?如果不能,那我为什么不能?

当然可以。只需将构造函数设为私有即可避免这种情况:只需添加 private Singleton() {} 即可防止默认构造函数成为 public.

我建议你将其设为 enum(因为它们无论如何都无法实例化);

enum Singleton {
    INSTANCE;
    public static Singleton getInstance() {
        return INSTANCE;
    }
}