序列化中的不同行为
|
我有以下代码:
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(\"test.dat\"));
ArrayList<String> list = null;
for(int i = 0; i < 10; i++)
{
list = new ArrayList<String>();
list.add(\"Object\" + i);
oo.writeObject(list);
}
oo.close();
当我打开test.dat文件并将对象“ 1”打开时,我得到了所有对象。但是,如果我将代码更改为此:
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(\"test.dat\"));
ArrayList<String> list = new ArrayList<String>();
for(int i = 0; i < 10; i++)
{
list.clear(); //clear the earlier objects
list.add(\"Object\" + i);
oo.writeObject(list);
}
oo.close();
现在,当我读取对象时,我只会得到第一个对象,即Object0。谁能解释这个行为?
没有找到相关结果
已邀请:
2 个回复
曝匿弄罚
时,第二次写入将只是对原始数据的引用(\“那是我之前写过的ID为x的
\”)。 即使对象的内容发生了更改(发生这种情况),也会发生这种情况,因此,在第二种情况下,您将只有1个完整的序列化(第一个)和9个对它的引用。 您可以调用ѭ5放弃先前写入的对象列表,并强制其再次进行完全序列化。
懊毁暗
仅知道该对象的1个实例可以保留。