Re: [心得] 序列化的小細節

看板java作者 (痞子軍團團長)時間19年前 (2006/10/25 23:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/13 (看更多)
請原諒我幫忙加個註解... (坦白說,我翻來翻去,看好久才知道確定差異在哪 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
文章代碼(AID): #15FuFXg5 (java)
討論串 (同標題文章)
文章代碼(AID): #15FuFXg5 (java)