天天看點

對象流的使用以及序列化機制

允許把記憶體中的java對象轉換成平台無關的二進制流,進而允許把這種二進制流持久的儲存在磁盤上或通過網絡将這種二進制流傳輸到另一個網絡節點,當其他程式擷取了這種二進制流,就可以恢複成原來的Java對象

将任何實作了Serializable接口的對象轉化為位元組資料,使其在儲存和傳輸時可被還原

序列化時RMI(Rmote Method Invoke – 遠端方法調用)過程的參數和傳回值都必須實作的機制,而RMI是javaEE的基礎,是以序列化機制是javaEE平台的基礎

某個對象支援序列化機制,必須讓其類可序列化,實作

Serializable

Externalizable

對象的反序列化過程,将硬碟中的檔案通過ObjectInputStream轉換為相應的對象

類是可以序列化的,實作序列化接口

要求類的屬性要實作序列化接口

凡是實作Serializable接口的類,都有一個表示序列化版本辨別符的靜态變量

private static final long serialVersionUID;

表示類的不同版本鍵的相容性,如果類沒有顯示定義這個靜态變量,它的值是java運作時環境根據類的内部細節自動生成的,若類的源代碼做了修改,serialVersionUID可能發生變化,故建議顯式聲明

類的不同版本對序列化相容,是以需確定類的不同版本具有相同的serialVersionUID

不希望類的不同版本對序列化相容,是以需確定類的不同版本具有不同的serialVersionUID

在Person類中增加

讀取類的對象

注意事項:

ObjectOutputStream和ObjectInputStream不能序列化static和teansient修飾的成員變量