在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文档中所述 。 那篇文章应描述如何做你正在寻找的东西; 查看标题为“ 自定义默认协议”的部分。