我正在尝试了解Java序列化机制,我对此几乎没有疑问
请回答有关Java序列化的以下问题:
oos.defaultWriteObject();
?根据this post,此处存在向后兼容性。我还不太了解它是如何实现的。序列化的不兼容更改之一是删除较新版本中的字段。这意味着较旧的版本将不得不设置有时对用户无效的默认值。这与较新的版本添加一个新字段并允许设置默认值有何不同?oos.defaultWriteObject();
和oos.writeObject(address);
不会有什么区别吗?我的意思是,两者都将所有超类和当前类的非瞬态非静态字段写入OOS。这里
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException {
stream.writeObject(name);
stream.writeInt(id);
stream.writeObject(DOB);
}
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
name = (String) stream.readObject();
id = stream.readInt();
DOB = (String) stream.readObject();
}
上面的代码产生与下面的代码相同的结果
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException {
stream.defaultWriteObject();
}
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
stream.defaultReadObject();
}
[何时使用这两种方法,何时仅使用writeObject(employee); // employee是我的整个对象//]
我试图了解Java序列化机制,并且我几乎没有疑问可以回答以下有关Java序列化的问题:为什么我们使用oos.defaultWriteObject(); ?根据...