3

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

4

2 回答 2

8

defaultReadObject()anddefaultWriteObject()应该是里面的第一个方法调用readObject(ObjectInputStream o)writeObject(ObjectOutputStream o).它分别读取和写入non transient类的所有字段。这些方法还有助于向后和未来的兼容性。如果将来您non-transient向类添加一些字段并且您试图通过旧版本的类对其进行反序列化,则 defaultReadObject() 方法将忽略新添加的字段,同样如果您通过新版本反序列化旧的序列化对象,则新的非瞬态字段将从 JVM 获取默认值,即如果它的对象则为 null,否则如果原始则布尔值为 false,int 为 0 等等。

于 2013-06-21T13:01:29.433 回答
2

这里有一些来自文档的有用行

defaultReadObject() 方法从此流中读取当前类的非静态和非瞬态字段。

写作也是如此。

于 2013-06-21T13:13:14.050 回答