[英]java object serialization readObject/defaultReadObject
ObjectInputStream
類中的readObject
和defaultReadObject
什么區別? 關於差異,我似乎找不到太多信息。
defaultReadObject()
調用默認的反序列化機制,並在Serializable
類上定義readObject()
方法時使用。 換句話說,當您具有自定義反序列化邏輯時,仍然可以返回默認的序列化,它將對您的非靜態,非瞬態字段進行反序列化。 例如:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.