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

public class MyObj implements Serializable { private transient Map myHash = new HashMap(); ... } 

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

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

如何添加这样的readObject方法:

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

那应该是你排除。

您可以实现自己的自定义readIn方法,并显式创建一个新的Map如Java Serializable文档中所述 。 那篇文章应描述如何做你正在寻找的东西; 查看标题为“ 自定义默认协议”的部分。