如何解决序列化时可以创建出单例对象的问题?

1 个回答

  • 东方朔
    重新审视自己,什么使你快乐,什么就是眼下最珍贵。
    如果将单例对象序列化成字节序列后,然后再反序列成对象,那么就可以创建出一个新的单例对象,从而导致单例不唯一,避免发生这种情况的解决方案是在单例类中实现readResolve()方法。 ```java public class Singleton implements java.io.Serializable { private Object readResolve() { return INSTANCE; } } ``` 通过实现readResolve方法,ObjectInputStream实例对象在调用readObject()方法进行反序列化时,就会判断相应的类是否实现了readResolve()方法,如果实现了,就会调用readResolve()方法返回一个对象作为反序列化的结果,而不是去创建一个新的对象。
    发布于 2022-02-10 14:10 •IP属地 湖北
    举报
    评论
    收藏