当类实现defaultReadObject()接口时,为什么需要将defaultWriteObject()readObject(ObjectInputStream o)编写为writeObject(ObjectOutputStream o)serializable方法中的第一条语句。

最佳答案

defaultReadObject()defaultWriteObject()应该是readObject(ObjectInputStream o)writeObject(ObjectOutputStream o).内部的第一个方法调用。它分别读取和写入该类的所有non transient字段。这些方法还有助于向后和将来的兼容性。如果将来在类中添加一些non-transient字段,并尝试通过旧版本的类对它进行反序列化,则defaultReadObject()方法将忽略新添加的字段,类似地,如果您通过新版本对旧的序列化对象进行反序列化,那么新的非瞬态字段将采用JVM的默认值,即,如果其对象为null,则为null,否则为null,如果原语为boolean则为false,int为0等等。

10-08 08:58