如何解决序列化时可以创建出单例对象的问题?
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属地 湖北举报评论收藏
公众号进入网站体验更佳

