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介面),如果是其他類的引用,則該類必須的實現序列化介面,方可該類實現序列化