为什么需要写defaultReadObject()
and defaultWriteObject()
作为第一个声明readObject(ObjectInputStream o)
and writeObject(ObjectOutputStream o)
类实现时的方法serializable
界面。
defaultReadObject()
and defaultWriteObject()
应该是里面的第一个方法调用readObject(ObjectInputStream o)
and writeObject(ObjectOutputStream o).
它读取和写入所有non transient
分别是类的字段。这些方法还有助于向后和未来的兼容性。如果将来你添加一些non-transient
字段到类中,并且您尝试通过旧版本的类反序列化它,那么 defaultReadObject() 方法将忽略新添加的字段,类似地,如果您通过新版本反序列化旧的序列化对象,那么新的非瞬态字段将采用JVM 的默认值,即如果它的对象则为 null,否则如果为原语则 boolean 为 false,int 为 0 等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)