Re: [心得] 序列化的小細節
請原諒我幫忙加個註解...
(坦白說,我翻來翻去,看好久才知道確定差異在哪 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
討論串 (同標題文章)