如何在序列化代理模式中调用代理类的readResolve()方法?

时间:2013-09-09 08:32:12

标签: java serialization marshalling unmarshalling

我正在研究序列化代理模式。它基本上说有一个代理类,应该声明为我们想要序列化的封闭类的静态嵌套类。因此,基本思想是代理保护封闭的可序列化类免受序列化的危险。

然而,实际上对我来说并不清楚。为什么我们在外部类上调用writeReplace()而在代理类上调用readResolve()?由于代理类就像外部类的静态成员,它甚至会被序列化?如果它没有被序列化,那么在反序列化期间如何在代理上调用readResolve()?

我确信我错过了一些基本的东西。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

查看Serializable

的文档

writeReplace()readResolve()是序列化引擎调用的特殊方法。

writeReplace()用代理替换正在序列化的对象,readResolve()用实际对象替换反序列化代理。

序列化代理类不必是要序列化的类的静态嵌套类。这只是更好地组织代码的惯例。