【问题标题】:Debugging deserialization of objects调试对象的反序列化
【发布时间】:2016-10-23 13:32:06
【问题描述】:

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

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

  • 实现 java.io.Serializable 的类
  • 类有setter和getter。
  • 我正在从该类中读取一个流,除了字段之外它可以工作:

            ois = new ObjectInputStream(bos);
            o=ois.readObject();
    

现在我的一般问题: 我不能在类的 getter 和 setter 中设置一些断点来查看在 readObject() 期间会发生什么吗? .就我而言,它似乎不会在 readObject() 期间通过我的设置器,因为我的断点被忽略了。

所以我的一般问题是。 readobject 任务是否调用类的设置器?

【问题讨论】:

标签: java deserialization


【解决方案1】:

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

除非您通过编写自己的私有readObject 方法(或实现Externalizable)来控制,否则ObjectInputStream 将仅使用不安全读取字段(statictransient 除外) > 魔法和反射。

【讨论】:

  • 感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 2021-12-08
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
相关资源
最近更新 更多