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

我们什么时候以及为什么要在java中进行自定义序列化?,java,serialization,deserialization,Java,Serialization,Deserialization,我们可以通过实现可序列化接口来序列化对象。那么,我们应该在什么时候通过提供以下方法来进行自定义序列化,为什么要调用defaultWriteObject和defaultReadObject方法 private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); } private void readObject(ObjectInputStream

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

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

}

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

}     

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

您可能想要序列化一些不可序列化的第三方类型对象。或者在读取时,您可以将数据从不推荐使用的字段迁移到另一个位置,从而避免了运行大规模迁移的需要

我相信还有很多其他原因,我只是还没有解决这些问题


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

也许这将可能是我通过那篇文章,但没有得到它的副本,请你解释一下。Subhendu@RajanikantaPradhan当您通过writeObject方法自定义序列化时,完全由开发人员决定如何序列化对象。这就是为什么在writeObject方法中调用此defaultWriteObject方法。此方法所做的是将允许的成员包括到流中以进行序列化,即非静态和瞬态字段。[参考]@Shubhandupramanik你指的是非静态、非瞬态字段,即两个字段,而不是两组字段。嗨,Martin,如果你提供一些示例,我会很容易理解。