java 序列化 map_Java语言里Hashmap序列化的一个坑

本文探讨了在Java中HashMap序列化时遇到的问题,详细解释了由于匿名内部类导致的序列化异常。当在类中直接初始化HashMap时,匿名内部类会持有外部类的引用,尝试序列化时会引发错误。通过改变初始化HashMap的方式,问题得到解决。
摘要由CSDN通过智能技术生成

本文主要向大家介绍了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);

//从流里读出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值