public class MyObj implements Serializable {
private transient Map<String, Object> myHash = new HashMap<String, Object>();
...
}
有没有办法确保当上一个类的对象被反序列化时,成员myHash将被设置为一个新的空Map而不是设置为null?
答案 0 :(得分:31)
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>();
}
}
答案 1 :(得分: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>();
}
}
那会让你感到厌烦。
答案 2 :(得分:3)
您可以实施自己的自定义readIn
方法,并按照Java Serializable documentation中的说明明确创建新的Map<T>
。那篇文章应该描述如何做你正在寻找的东西;查看标题为自定义默认协议的部分。