老师,关于单例模式序列化的问题

来源:8-6 单例设计模式-序列化破坏单例模式原理解析及解决方案

张婧仪

2025-02-28

老师,你在讲序列化破坏单例模式的时候说“在类中加入readResolve方法可以避免破坏单例模式”。
我的问题是:老师你一开始是怎么找到这个readResolve方法的?一开始怎么明白加入readResolve方法就可以避免破坏?你一开始思考过程是啥?挺好奇的

写回答

1回答

geelylucky

2025-03-09

同学你好,这个问题非常好,其实就是需要了解反序列化的原理:

反序列化的执行流程:
  1. 反序列化时会创建一个新的对象。

  2. 在对象完全反序列化后,Java 会检查是否存在 readResolve 方法。如果有,则调用该方法。

  3. 该方法的返回值将替换反序列化生成的对象,从而确保仍然是同一个单例对象。

知道上述反序列化的过程后,你就知道可以通过这个方式达到目标了。

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3433 学习 · 408 问题

查看课程