簡體   English   中英

在Java中將對象的臨時成員反序列化為非null默認值

[英]Deserialize a transient member of an object to a non-null default in Java

public class MyObj implements Serializable {
  private transient Map<String, Object> myHash = new HashMap<String, Object>();
  ...
}

有沒有辦法確保當上一個類的對象被反序列化時,成員myHash將被設置為一個新的空Map而不是設置為null?

public class MyObj implements Serializable {
    private transient Map<String, Object> myHash = new HashMap<String, Object>();

    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();

        myHash = new HashMap<String, Object>();
    }
}

如何添加這樣的readObject方法:

public class MyObj implements Serializable {
  private transient Map<String, Object> myHash = new HashMap<String, Object>();
  ...
  private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
    in.defaultReadObject();     
    myHash = new HashMap<String, Object>();
  }
}

那應該是你排除。

您可以實現自己的自定義readIn方法,並顯式創建一個新的Map<T>Java Serializable文檔中所述 那篇文章應該描述如何做你正在尋找的東西; 查看標題為“ 自定義默認協議”的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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