簡體   English   中英

java對象序列化readObject / defaultReadObject

[英]java object serialization readObject/defaultReadObject

ObjectInputStream類中的readObjectdefaultReadObject什么區別? 關於差異,我似乎找不到太多信息。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM