Java 1.1 引入物件序列化,支援實作 Serializable 介面的物件轉換為位元組序列,並能完整還原。此機制自動處理跨平台差異(位元組序、資料表示),讓 Windows 建立的物件可在 Unix 上還原。
Serializable(標記介面,無方法),Java 1.1 許多標準庫類別已支援// 序列化
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("worm.out"));
out.writeObject(wormObject);
// 反序列化
ObjectInputStream in = new ObjectInputStream(new FileInputStream("worm.out"));
Worm w2 = (Worm)in.readObject(); // 需向下轉型
序列化機制會遞迴追蹤物件內所有參考,包含陣列、成員物件,自動維護完整的物件網。開發者無需手動管理參考關係,算法已優化處理循環參考等複雜情況。
建立包含 Data 陣列與遞迴 next 參考的 Worm 物件,序列化後還原,驗證所有連結關係完整保留。輸出證實還原物件與原物件結構完全一致。
Serializable 物件反序列化不呼叫任何建構子(含預設建構子),完全從輸入流重建狀態。這與 Externalizable 必須呼叫預設建構子形成對比。
序列化基於 InputStream/OutputStream 舊體系,非 Reader/Writer 新體系,實務上常需混合使用兩種階層。