java序列防重复_避免Java反序列化中的重复对象

我有两个列表(list1和list2)包含对某些对象的引用,其中一些列表条目可能指向同一个对象.然后,由于各种原因,我将这些列表序列化为两个单独的文件.最后,当我反序列化列表时,我想确保我不会重新创建超出需要的对象.换句话说,List1的某些条目仍然可以指向与List2中的某个条目相同的对象.

MyObject obj = new MyObject();

List list1 = new ArrayList();

List list2 = new ArrayList();

list1.add(obj);

list2.add(obj);

// serialize to file1.ser

ObjectOutputStream oos = new ObjectOutputStream(...);

oos.writeObject(list1);

oos.close();

// serialize to file2.ser

oos = new ObjectOutputStream(...);

oos.writeObject(list2);

oos.close();

我认为spec的3.4和A.2节说反序列化严格地导致了新对象的创建,但我不确定.如果是这样,一些可能的解决方案可能涉

>实现equals()和hashCode()并手动检查引用.

>创建一个“容器类”来保存所有内容,然后序列化容器类.

是否有一种简单的方法可以确保在反序列化时不会复制对象?

谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值