我们何时以及为什么要在java中进行自定义序列化?

时间:2017-09-21 07:03:25

标签: java serialization deserialization

我们可以通过实现Serializable接口来序列化对象。那么我们何时应该通过提供以下方法来进行自定义序列化?为什么我们应该调用defaultWriteObject和defaultReadObject方法?

private void writeObject(ObjectOutputStream out) throws IOException 
{           out.defaultWriteObject(); 

}

private void readObject(ObjectInputStream in) throws  IOException, ClassNotFoundException 
{           
   in.defaultReadObject();

}     

1 个答案:

答案 0 :(得分:1)

可能有各种各样的原因,这是你在试图解决问题时常常发现的许多事情之一。

您可能希望序列化一些不可序列化的第三方类型对象。或者在阅读时,您可以将数据从已弃用的字段迁移到另一个位置,从而无需运行大规模迁移。

我确信还有很多其他原因,我还没有解决这些问题。

默认的读取和写入方法基本上都是默认序列化,而您的代码只是附加的,所以请注意您调用它的顺序和自定义代码。