我正在研究序列化代理模式。它基本上说有一个代理类,应该声明为我们想要序列化的封闭类的静态嵌套类。因此,基本思想是代理保护封闭的可序列化类免受序列化的危险。
然而,实际上对我来说并不清楚。为什么我们在外部类上调用writeReplace()
而在代理类上调用readResolve()
?由于代理类就像外部类的静态成员,它甚至会被序列化?如果它没有被序列化,那么在反序列化期间如何在代理上调用readResolve()?
我确信我错过了一些基本的东西。有人可以解释一下吗?
答案 0 :(得分:1)
查看Serializable
。
writeReplace()
和readResolve()
是序列化引擎调用的特殊方法。
writeReplace()
用代理替换正在序列化的对象,readResolve()
用实际对象替换反序列化代理。
序列化代理类不必是要序列化的类的静态嵌套类。这只是更好地组织代码的惯例。