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

标签 java serialization

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


先发制人地回答不相关的问题:

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

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

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

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


换句话说,在:

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

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

谢谢!

阿诺

最佳答案

是 - in.defaultReadObject()

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

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

关于java - 在自定义反序列化中调用标准反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820670/

相关文章:

java - getSupportFragmentManager().getFragments() 显示编译时错误

java - 如何使用 jdom 检查文件中是否存在元素

java - 在 ArrayList 中插入不同的数组

django 休息框架 : set field-level error from serializer validate() method

java - 使用继承不使用属性是正确的设计吗?导致序列化出现问题。 java

java - Android 中的游标 NotSerializedException

java - 在异常处理期间何时使用记录器?

java - 在 Swing 中模拟这个 SWT Shell

java - 尝试从子级序列化父级成员变量,其中父级未实现可序列化

java - Ant 与JAXB : add "extension" and make generated classes "serializable"