在Java中将对象的临时成员反序列化为非null默认值

ʞɔı*_*ɔıu 19 java serialization

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

有没有办法确保当上一个类的对象被反序列化时,成员myHash将被设置为一个新的空Map而不是设置为null?

小智 32

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>();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对代码进行一些解释可以改善您的答案。仅代码的答案仅对已经知道自己在做什么的人有意义! (2认同)

Dal*_*vak 9

如何添加这样的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>();
  }
}
Run Code Online (Sandbox Code Playgroud)

那应该是你排除.