有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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


对无关问题的抢先回答:

为什么不在通常情况下反序列化对象后执行此操作

  1. 这个对象在很多地方被序列化/反序列化
  2. 此数据结构是序列化/反序列化的较大对象的一部分,因此在反序列化之后,您还必须浏览任何封装对象
  3. 其他使用该框架的开发人员可能没有意识到或忘记这一步,这将导致一个巨大的bug磁铁
  4. 那会很难看

你为什么用字符串。实习生()首先

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


换句话说,在:

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

是否有一种方法可以在内部调用默认/标准反序列化?(这样我们就可以在后面加上一小步)

谢谢

阿诺


共 (1) 个答案

  1. # 1 楼答案

    in.defaultReadObject()

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

    请注意,如果您使用Externalizable,您就只能靠自己了。您可以使用^{}并部分自定义输出