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
- IO流的Properties集合,序列化流與反序列化流,列印流及commons-IO
- Java序列化流的奇妙之旅Java
- 好程式設計師Java學習路線之Java中的物件流和序列化程式設計師Java物件
- Tinking in Java ---Java的NIO和物件序列化Java物件
- 談談 JAVA 的物件序列化Java物件
- Java物件的序列化和反序列化實踐Java物件
- 用非常硬核的JAVA序列化手段實現物件流的持久化儲存Java物件持久化
- JAVA_基礎IO流物件流(三)Java物件
- Java基礎22--物件序列化和反序列化Java物件
- Java的序列化與反序列化Java
- 為什麼Java需要物件的序列化Java物件
- 物件序列化(序列化)物件
- Java安全基礎之Java序列化與反序列化Java
- Java中的序列化與反序列化Java
- jackson對Exception型別物件的序列化與反序列化Exception型別物件
- IO流(03)--序列化流、列印流
- java培訓教程分享:Java中怎樣將資料物件序列化和反序列化?Java物件
- 流------緩衝流、轉換流、序列化流、列印流
- Java物件導向——類與物件Java物件
- Java:對一個物件序列化和反序列化的簡單實現Java物件
- Java 中的 transient 關鍵字和物件序列化Java物件
- netty系列之:使用Jboss Marshalling來序列化java物件NettyJava物件
- Java IO: 序列化與ObjectInputStream、ObjectOutputStreamJavaObject
- JavaScript 物件序列化JavaScript物件
- 一文帶你全面瞭解java物件的序列化和反序列化Java物件
- Java-物件與類Java物件
- Java - 11 類與物件Java物件
- IO流(3) - 序列化和反序列化
- 序列化: 一個老傢伙的鹹魚翻身(Java物件、XML、JSON、反序列化)Java物件XMLJSON
- Python中物件序列化和反序列化Python物件
- 全網最適合入門的物件導向程式設計教程:57 Python字串與序列化-序列化與反序列化物件程式設計Python字串
- java中的類與物件Java物件
- 【騏程】Java類與物件Java物件
- Java單例模式與反射及序列化Java單例模式反射
- .NET物件的XML序列化和反序列化物件XML
- Java語言之物件導向—類與物件(上)Java物件
- springboot,redis 物件序列化配置Spring BootRedis物件