我有两个列表(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()并手动检查引用.
>创建一个“容器类”来保存所有内容,然后序列化容器类.
是否有一种简单的方法可以确保在反序列化时不会复制对象?
谢谢.