序列化中的readObject/writeObject的使用

Vic*_*cky 9 java serialization java-ee

我正在阅读本文以了解有关Java序列化过程的更多信息.在使用时,readObject/writeObject我可以看到两个用例:

  1. 我们可以writeObject在序列化之前使用它来加密字节码.从安全角度来看,这是件好事.
  2. 我们可以readObject用来执行反序列化后需要立即执行的任何特定代码片段,当然从#1开始,我们甚至可以readObject用来解密序列化对象时被删除的字节代码.

在编写自定义readObject/writeObject方法时序列化/反序列化对象时是否还有其他实际情况?或者,如果你能指出我可以看到readObject/writeObject的一些体面和实际用途的任何地方?

Mat*_*all 15

readObject在对象进行反序列化后需要初始化瞬态(非序列化)字段时,自定义方法也很有用.


顺便说一句,请查看Effective Java,第11章(我不确定第2版中的章节/项目编号是什么.).这是一篇关于序列化的精彩读物.

  • `readResolve()`也可以用于此目的. (4认同)

Pet*_*rey 5

出于性能原因或向后兼容性原因,或者因为要序列化的字段不是Serializable,您可以实现自己的readObject/writeObject.

有关readObject/writeObject的好例子,我会查看JDK附带的源代码.或者我会尝试http://www.google.co.uk/search?q=readObject+writeObject+examples