Java物件流與序列化
Java的序列化機制是RMI、EJB等技術的技術基礎。
所有的類必須通過實現Serializable介面來實現序列化的功能,Serializable介面沒有任何方法,因此你不需要對這些類做任何改動。
----為什麼叫序列化
readObject()函式從ObjectInputStream中讀入一個物件。特別是,這個方法會讀回物件的類,類的簽名以及這個類及其超類中所有非靜態和非瞬時的域的值,它執行的反序列允許恢復多個物件引用。--這說明了transient [ˈtrænziənt] 的變數不能被序列化。static的變數也不能序列化。
----修改預設的序列化機制
private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException
看下ArrayList是如何實現的序列化和反序列化的:
上述兩個方法只需要儲存和載入它們的資料域,而不需要關心超類資料和任何其他類的資訊。除了讓序列化機制來儲存和恢復物件資料,類還可以定義自己的機制。為了做到這一點,這個類必須實現Externalizable介面,這需要她定義兩個方法:
public void writeExternal(java.io.ObjectOutputStream
s) throws java.io.IOException
public void readExternal(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException
與上述的的方法不同的是,這了兩個方法要負責對包括超類資料在內的整個物件的儲存和恢復負全責,而序列化機制在類中僅僅只是記錄該物件所屬於的類。在讀入可外部化的類時,物件流將用無參構造器建立一個物件,然後呼叫readExternal方法。----序列化單例
為了解決這個問題,你需要定義另外一個被稱為readResolve的特殊序列化方法。如果定義了readResolve方法,在物件被序列化之後就會呼叫它。它必須返回一個物件,而該物件之後會成為readObject的返回值。
相關文章
- Java物件的序列化與反序列化-Json篇Java物件JSON
- [java IO流]之 序列化流和反序列化流(ObjectOutputStream/ObjectInputStream)JavaObject
- java物件序列化Java物件
- 理解Java物件序列化Java物件
- Java序列化流的奇妙之旅Java
- java 物件序列化要序列化那些內容Java物件
- 好程式設計師Java學習路線之Java中的物件流和序列化程式設計師Java物件
- Java之IO流基礎流物件Java物件
- Java IO7:管道流、物件流Java物件
- 談談 JAVA 的物件序列化Java物件
- 深入理解Java物件序列化Java物件
- 用非常硬核的JAVA序列化手段實現物件流的持久化儲存Java物件持久化
- Java物件的序列化和反序列化實踐Java物件
- C#中物件的序列化與反序列化C#物件
- JAVA_基礎IO流物件流(三)Java物件
- Tinking in Java ---Java的NIO和物件序列化Java物件
- Java的序列化與反序列化Java
- Java--序列化與反序列化Java
- Java基礎22--物件序列化和反序列化Java物件
- Java安全基礎之Java序列化與反序列化Java
- java 序列化與反序列化例項Java
- 物件序列化(序列化)物件
- 為什麼Java需要物件的序列化Java物件
- 流------緩衝流、轉換流、序列化流、列印流
- Java序列化(Serializable)與反序列化詳解Java
- C# 實現複雜物件的序列化與反序列化C#物件
- Java 物件序列化 NIO NIO2 深度解析Java物件
- Java序列化與反序列化(原生方式與Jackson方式)Java
- 深入分析Java的序列化與反序列化Java
- java培訓教程分享:Java中怎樣將資料物件序列化和反序列化?Java物件
- Java IO: 序列化與ObjectInputStream、ObjectOutputStreamJavaObject
- jackson對Exception型別物件的序列化與反序列化Exception型別物件
- Java:對一個物件序列化和反序列化的簡單實現Java物件
- [.net 物件導向程式設計進階] (9) 序列化(Serialization) (一) 二進位制流序列化物件程式設計
- 【Java基礎】序列化與反序列化深入分析Java
- JavaScript 物件序列化JavaScript物件
- Java 中的 transient 關鍵字和物件序列化Java物件
- JSON 物件序列化、反序列化JSON物件