1. 程式人生 > >java基礎類庫學習(六.6)物件序列化

java基礎類庫學習(六.6)物件序列化

前言

物件序列化:允許把記憶體中的物件轉換成平臺無關的二進位制流,從而把這種二進位制流持久的儲存自磁碟上,通過網路將這種二進位制流傳輸到網路的另一個節點,其他程式一旦獲得了這種二進位制流,都可以將這種二進位制流恢復成原來的java物件

物件的序列化是指將一個java物件寫入io流中,

物件的反序列化是指從io流中恢復該java物件

物件如何支援序列化機制?

實現Serializable/Externalizable介面

java的Serializable是一個標記介面,

所有可能在網路上傳輸的物件的類都應該是可序列化的,否則程式出現異常,因此序列化機制是java ee平臺的基礎

建議:程式建立的每個javabean類都實現Serializable

如何實現序列化?

(1)實現Serializable介面

(2)建立一個ObjectOutputSteam物件輸出流

ObjectOutputStream oos=new ObjectPutputStream(new FileOutputStream(""));

將一個Person物件寫入到輸出流中

oos.writeObject(p1);

如何實現反序列化?

建立一個ObjectInputStream輸入流

ObjectInputStream ois=new ObjectInputStream(new FIleInputStream("object.txt")):

Person p=(Person) ois.readObject();

反序列化無需通過構造器初始化java物件

什麼樣的類都可以序列化?實現了Serializable介面就可以序列化?

類的成員變數如果是String/int型別,(預設實現了Seriazilable介面),如果是其他類的引用,則該類必須的實現序列化介面,方可該類實現序列化