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

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

    private static SingleObjcet singleObjcet;

    private static volatile 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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。