本文主要向大家介绍了Java语言里Hashmap序列化的一个坑,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
在做业务需求的过程中,遇到一个非常奇怪的问题。在一个继承了 Serializable 接口的java bean里按照常规操作添加了一个hashmap和与之对应的getter、setter,就像这样:
...
private HashMapmChooseMap;
publicHashMapgetChooseMap(){
return mChooseMap;
}
publicvoidsetChooseMap(HashMapchooseMap){
mChooseMap = chooseMap;
}
...
复制代码
然后我在某种情况下对含有这个hashmap的java bean进行了deep clone操作,就像这样:
/**
* 深度拷贝 要求data对象及其引用对象都实现了Serializable接口才可以用
*
* @param o 要深拷贝的对象
*/
public staticTdeepClone(T o)throwsIOException, ClassNotFoundException{
//将对象写到流里
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(o);
//从流里读出来