1. 程式人生 > >序列化介面的id有什麼用?—— Java經典面試題系列

序列化介面的id有什麼用?—— Java經典面試題系列

我:

物件經常要通過IO進行傳送,讓你寫程式傳遞物件,你會怎麼做?把物件的狀態資料用某種格式寫入到硬碟,Person->“zxx,male,28,30000”àPerson,既然大家都要這麼幹,並且沒有個統一的幹法,於是,sun公司就提出一種統一的解決方案,它會把物件變成某個格式進行輸入和輸出,這種格式對程式設計師來說是透明(transparent)的,但是,我們的某個類要想能被sun的這種方案處理,必須實現Serializable介面。

  ObjectOutputStream.writeObject(obj);

  Object obj = ObjectInputStream.readObject();

   假設兩年前我儲存了某個類的一個物件,這兩年來,我修改該類,刪除了某個屬性和增加了另外一個屬性,兩年後,我又去讀取那個儲存的物件,或有什麼結果?未知!sun的jdk就會蒙了。為此,一個解決辦法就是在類中增加版本後,每一次類的屬性修改,都應該把版本號升級一下,這樣,在讀取時,比較儲存物件時的版本號與當前類的版本號,如果不一致,則直接報版本號不同的錯!