需要defaultReadObject()和defaultWriteObject()

3 java serialization

为什么需要编写defaultReadObject()defaultWriteObject()作为类实现接口时的第一个语句readObject(ObjectInputStream o)writeObject(ObjectOutputStream o)方法serializable.

Try*_*ing 7

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