0

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

但是,我实际上并不清楚实施。为什么我们调用writeReplace()外部类readResolve()上的和代理类上的?由于代理类就像外部类的静态成员,它怎么会被序列化呢?如果它没有被序列化,那么在反序列化期间如何在代理上调用 readResolve()?

我确定我在这里遗漏了一些基本的东西。有人可以阐明一下吗?

4

1 回答 1

2

检查Serializable.

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

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

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

于 2013-09-09T08:53:30.053 回答