如何防止单例通过反射技术重复创建

228 阅读1分钟
  • 直接上代码
/**
 * @author :zhuwengen
 * @date :Created in 2019/7/10 15:47
 * @description:防止单例对象通过反射技术继续创建实例
 * @modified By:
 * @version:
 */
public class SingleObjcet {

    private static SingleObjcet singleObjcet;

    private static int count;

    private SingleObjcet() {

        synchronized (SingleObjcet.class) {
            if (count > 0) {
                throw new RuntimeException("SingleObjcet 实例已经存在");
            }
            count++;
        }
    }

    public static SingleObjcet getInstance() {

        if (singleObjcet == null) {
            singleObjcet = new SingleObjcet();
        }
        return singleObjcet;
    }
}