美文网首页
Java实现了Serializable接口后怎么写单例

Java实现了Serializable接口后怎么写单例

作者: zhaozhaoicode | 来源:发表于2020-05-11 02:32 被阅读0次

单例模式的类

public class Singleton { 

    private final static Singleton singleInstance = new Singleton(); 

    private Singleton(){} 

    public static Singleton getInstance(){ 
        return singleInstance; 
    }

}

但是实现了Serializable接口后,就不是单例模式了。
导致这个问题的原因是序列化中的readObject会通过反射,调用没有参数的构造方法创建一个新的对象,这时候就需要重写readResolve方法返回对应的对象实例。

public class Singleton implements Serializable{ 

    private final static Singleton singleInstance = new Singleton(); 

    private Singleton(){} 

    public static Singleton getInstance(){ 
        return singleInstance; 
    }

    private Object readResolve(){
        return singleInstance;
    }
}

相关文章

网友评论

      本文标题:Java实现了Serializable接口后怎么写单例

      本文链接:https://www.haomeiwen.com/subject/hxaenhtx.html