Serializable介面
作用:標記一個類可以被序列化,如果沒有實現該介面,則會丟擲異常。
ObjectOutputStream
中原始碼:
實驗:
serialVersionUID
作用:表示一個序列換版本,控制序列化與反序列化。
實現Serializable介面後,如果不顯式設定serialVersionUID,那麼系統會根據類中內容計算一個serialVersionUID。(如果類中內容修改了(新增空格、空行不算),serialVersionUID會自動發生變化)
反序列化時會檢測serialVersionUID是否一致,不一致會阻止反序列化。
驗證步驟:
- User類不顯式新增serialVersionUID,構建一個物件,將物件序列化進檔案(user.txt)。
- User類新增自定義serialVersionUID,嘗試將user.txt 反序列化成User物件。