调试对象的反序列化

时间:2016-10-23 13:32:07

标签: java deserialization

我对某事感到困惑,希望你能澄清一下。

我想调试反序列化任务。 我有:

  • 实现java.io.Serializable
  • 的类
  • 这个班的主人和吸气鬼。
  • 我正在读取该类的一个流,除了字段之外它还可以工作:

    f

现在我的一般情况是: 我不能在类的getter和setter中有一些断点来查看readObject()期间会发生什么吗? 。在我的情况下,它似乎不会在readObject()期间通过我的setter,因为我的断点被忽略。

所以我的一般问题是。 readobject任务是否会调用类的setter?

1 个答案:

答案 0 :(得分:0)

不,标准Java序列化永远不会调用getter或setter(甚至不是构造函数,除了第一个非可序列化的超类)。

除非您通过编写自己的私有readObject方法(或实施Externalizable)来控制,否则ObjectInputStream只会读取字段(static和{{1}除外)使用不安全的魔法和反射。