老师,关于单例模式序列化的问题
来源:8-6 单例设计模式-序列化破坏单例模式原理解析及解决方案

张婧仪
2025-02-28
老师,你在讲序列化破坏单例模式的时候说“在类中加入readResolve方法可以避免破坏单例模式”。
我的问题是:老师你一开始是怎么找到这个readResolve方法的?一开始怎么明白加入readResolve方法就可以避免破坏?你一开始思考过程是啥?挺好奇的
写回答
1回答
-
geelylucky
2025-03-09
同学你好,这个问题非常好,其实就是需要了解反序列化的原理:
反序列化的执行流程:
反序列化时会创建一个新的对象。
在对象完全反序列化后,Java 会检查是否存在
readResolve
方法。如果有,则调用该方法。该方法的返回值将替换反序列化生成的对象,从而确保仍然是同一个单例对象。
知道上述反序列化的过程后,你就知道可以通过这个方式达到目标了。
00
相似问题