gpt4 book ai didi

java对象序列化readObject/defaultReadObject

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:00 28 4
gpt4 key购买 nike

ObjectInputStream 类中的readObjectdefaultReadObject 有什么区别?我似乎找不到太多关于差异的信息。

最佳答案

defaultReadObject() 调用默认的反序列化机制,并在您在 Serializable 类上定义 readObject() 方法时使用。换句话说,当你有自定义反序列化逻辑时,你仍然可以回到默认序列化,这将反序列化你的非静态、非 transient 字段。例如:

public class SomeClass implements Serializable {
private String fld1;
private int fld2;
private transient String fld3;
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException {
stream.defaultReadObject(); //fills fld1 and fld2;
fld3 = Configuration.getFooConfigValue();
}
]

另一方面,当您在反序列化对象的外部创建 ObjectInputStream 并希望读取先前已序列化的对象时,将使用 readObject():

ObojectInputStream stream = new ObjectInputStream(aStreamWithASerializedObject);
Object foo = (Foo) stream.readObject();

关于java对象序列化readObject/defaultReadObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4119181/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com