我正在研究序列化代理模式。它基本上说有一个代理类,它应该被声明为我们想要序列化的封闭类的静态嵌套类。所以基本思想是代理保护封闭的可序列化类免受序列化的危险。
但是,我实际上并不清楚实施。为什么我们调用writeReplace()
外部类readResolve()
上的和代理类上的?由于代理类就像外部类的静态成员,它怎么会被序列化呢?如果它没有被序列化,那么在反序列化期间如何在代理上调用 readResolve()?
我确定我在这里遗漏了一些基本的东西。有人可以阐明一下吗?
我正在研究序列化代理模式。它基本上说有一个代理类,它应该被声明为我们想要序列化的封闭类的静态嵌套类。所以基本思想是代理保护封闭的可序列化类免受序列化的危险。
但是,我实际上并不清楚实施。为什么我们调用writeReplace()
外部类readResolve()
上的和代理类上的?由于代理类就像外部类的静态成员,它怎么会被序列化呢?如果它没有被序列化,那么在反序列化期间如何在代理上调用 readResolve()?
我确定我在这里遗漏了一些基本的东西。有人可以阐明一下吗?
检查Serializable
.
writeReplace()
并且readResolve()
是序列化引擎调用的特殊方法。
writeReplace()
用代理替换被序列化的对象,readResolve()
用实际对象替换反序列化的代理。
序列化代理类不必是要序列化的类的静态嵌套类。这只是更好地组织代码的约定。