作者PsMonkey (痞子军团团长)
看板java
标题Re: [心得] 序列化的小细节
时间Wed Oct 25 23:41:22 2006
请原谅我帮忙加个注解...
(坦白说,我翻来翻去,看好久才知道确定差异在哪 XDXD)
※ 引述《pao0111 (Pao)》之铭言:
: 分别写入两个档案:
//这是会导致 reference 失败的写法
//差异点在於,这边存在两个不同的档案当中
: FileOutputStream fos = new FileOutputStream("a.object");
: ObjectOutputStream oos = new ObjectOutputStream(fos);
: oos.writeObject(a);
: oos.close();
: fos = new FileOutputStream("b.object");
: oos = new ObjectOutputStream(fos);
: oos.writeObject(b);
: oos.close();
: 嗯,没错误发生。
: 可见互相参考甚至是循环参考对物件的序列化是没问题的。
: 在别的程式里,读出那两个物件来:
: FileInputStream fis = new FileInputStream("a.object");
: ObjectInputStream ois = new ObjectInputStream(fis);
: A a = (A)ois.readObject();
: fis = new FileInputStream("b.object");
: ois = new ObjectInputStream(fis);
: B b = (B)ois.readObject();
: 此时:
: System.out.println(a.b == b);
: System.out.println(a.b.a == a);
: System.out.println(b.a == a);
: System.out.println(b.a.b == b);
: 印出来的是:
: false
: true
: false
: true
: 哎呀!参照居然变了!
我比较想知道,这时候的 a.b 会指到哪里去 @__@???
为甚麽 a.b.a 又会指回来自己 @__@???
--
侃侃长论鲜窒碍 网站:
http://www.psmonkey.idv.tw
众目睽睽无心颤 个人版:telnet://legend.twbbs.org
茕居少聊常人事
杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.211.52