java序列化知識整理,java序列化整理

來源:互聯網
上載者:User

java序列化知識整理,java序列化整理

1. 什麼是序列化?

  序列化就是只把一個對象序列化成一個位元組流,用於網路傳輸或者持久化。

2. 序列化的使用情境?

  a). 把記憶體中的對象持久化到檔案或者資料庫中;

  b). 對象在網路上傳輸。

3. 序列化的實現?

  1). 實現Serializable介面:

    此方法簡單,沒有任何需要實現的方法。

    筆者從業(web開發)兩年一直使用該方法,本文以下主要講解此方法。

  2). 實現Externalizable 介面: Externalizable 是Serializable的子介面
    此方法需要實現的方法,可以自己控制序列化的屬性。

4. Serializable序列化的使用注意點

  1. 序列化ID必須一致。

    虛擬機器允許還原序列化有三個條件:類路勁一致,功能代碼一致,兩個類的序列化ID一致;

  2. 對象A中引用對象B,A實現了序列化,則B也會被序列化;

  3. 父物件實現序列化,則子物件也會被序列化

  4. 子類對象被序列化,則父類對象不會被序列化,還原序列化時調用預設的無參建構函式構造對象;

  5. 序列化的對象中有屬性前有transient修飾符時,該屬性不會被序列化,因為該transient屬性是臨時的;

  6. 序列化的對象中有屬性前有static修飾符時,該屬性不會被序列化,因為static代表次屬性是類屬性不是對象屬性;

  7. 序列化的對象中有屬性屬于敏感欄位,需要加密傳輸,則需要自訂序列化和還原序列化。需要注意的是,即使對象的屬性是private也是不安全的,只有人工進行安全處理。

    自訂方法:在序列化的類中自訂writeObject() 和 readObject()方法,虛擬機器會試圖調用對象類裡的 writeObject 和 readObject 方法,進行使用者自訂的序列化和還原序列化,

  如果沒有這樣的方法,則預設調用是 ObjectOutputStream 的 defaultWriteObject 方法以及 ObjectInputStream 的 defaultReadObject 方法。

  6. 序列化儲存規則:當寫入檔案的為同一對象時,並不會再將對象的內容進行儲存,而只是再次儲存一份引用,檔案大小不會翻倍,只是略有增加(新增引用的控制資訊)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.