首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 物件序列化基礎與實作

     編輯:Java 相關知識

Java 1.1 引入物件序列化,支援實作 Serializable 介面的物件轉換為位元組序列,並能完整還原。此機制自動處理跨平台差異(位元組序、資料表示),讓 Windows 建立的物件可在 Unix 上還原。

核心概念

  • 有限持久化:物件生存期不綁定程式執行週期,透過序列化存檔、重啟時還原達成持久效果
  • 支援 RMI 與 Java Beans:遠端方法呼叫傳輸參數/回傳值、Beans 設計時期狀態保存皆仰賴序列化
  • 實作簡單:類別僅需實作 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(); // 需向下轉型

物件圖自動追蹤

序列化機制會遞迴追蹤物件內所有參考,包含陣列、成員物件,自動維護完整的物件網。開發者無需手動管理參考關係,算法已優化處理循環參考等複雜情況。

Worm 範例驗證

建立包含 Data 陣列與遞迴 next 參考的 Worm 物件,序列化後還原,驗證所有連結關係完整保留。輸出證實還原物件與原物件結構完全一致。

關鍵特性:不呼叫建構子

Serializable 物件反序列化不呼叫任何建構子(含預設建構子),完全從輸入流重建狀態。這與 Externalizable 必須呼叫預設建構子形成對比。

IO 體系注意事項

序列化基於 InputStream/OutputStream 舊體系,非 Reader/Writer 新體系,實務上常需混合使用兩種階層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved