【问题标题】:java - invoking standard deserialization inside custom deserializationjava - 在自定义反序列化中调用标准反序列化
【发布时间】:2010-09-29 10:18:45
【问题描述】:

我有一个序列化和反序列化的简单数据结构。 在反序列化时,我希望数据结构本身进行后续处理步骤。在我们的例子中,它应该简单地在它包含的所有字符串上调用 String.intern()。


对无关问题的抢先回答:

您为什么不在正常反序列化对象后简单地执行此操作?

  1. 这个对象在很多地方都被序列化/反序列化了
  2. 此数据结构是已序列化/反序列化的较大对象的一部分,因此您还必须在反序列化后浏览任何封装对象
  3. 使用该框架的其他开发人员可能不知道或忘记了这一步,并且会产生巨大的错误磁铁
  4. 会很丑

你为什么首先使用 String.intern()?

出于性能原因。我们进行大量的文本处理和计算需要这个。


换句话说,在:

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;

有没有办法调用内部的默认/标准反序列化? (这样我们就可以在之后添加我们的小步骤)

谢谢!

阿诺

【问题讨论】:

    标签: java serialization


    【解决方案1】:

    是的 - in.defaultReadObject()

    但你必须使用readObject(..) 而不是readExternal(..)

    请注意,如果您使用Externalizable,则只能靠自己。您可以使用Serializable 并部分自定义输出。

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      相关资源
      最近更新 更多