Java - 在自定义反序列化中调用标准反序列化

4
我有一个简单的数据结构,可以进行序列化和反序列化。在反序列化时,我希望数据结构本身能够进行后续处理步骤。在我们的情况下,它应该只是对其包含的所有字符串调用String.intern()。

预先回答无关问题:

为什么你不在通常反序列化对象之后再执行这个操作?

  1. 这个对象在很多地方进行了序列化/反序列化
  2. 这个数据结构是更大的对象的一部分,这些对象也被序列化/反序列化,所以您还需要在反序列化后浏览任何封装对象
  3. 使用框架的其他开发人员可能不知道或忘记这个步骤,这将导致一个巨大的错误磁铁
  4. 这会很丑陋

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

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


换句话说,在:

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

有没有一种方法可以在内部调用默认/标准反序列化?(这样我们就可以在之后添加我们的小步骤)
谢谢!
Arnaud
1个回答

4

是的 - 使用 in.defaultReadObject()

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

请注意,如果使用 Externalizable,您将独自处理。您可以使用Serializable 并部分自定义输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接