美文网首页
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