第2章 對象序列化與反序列化

第2章 對象序列化與反序列化

ID:20203538

大?。?.21 MB

頁數:16頁

時間:2018-10-11

第2章 對象序列化與反序列化_第1頁
第2章 對象序列化與反序列化_第2頁
第2章 對象序列化與反序列化_第3頁
第2章 對象序列化與反序列化_第4頁
第2章 對象序列化與反序列化_第5頁
資源描述:

《第2章 對象序列化與反序列化》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫

1、Java對象的序列化與反序列化本章內容對象序列化與反序列化的基本概念實現序列化的基本過程Serializable和Externalizable接口ObjectOutputStream和ObjectInputStream自定義序列化的兩種方式默認序列化方式與自定義序列化方式的比較序列化類不同版本的序列化兼容性對象序列化對象序列化:將Java對象轉化成二進制字節(jié)流的過程。對象反序列化:將二進制字節(jié)流恢復為Java對象的過程。對象序列化的主要用途:將對象的字節(jié)序列永久的保存到硬盤上,通常存放在一個文件中。(2)在網絡中傳輸對象的字節(jié)序列。Serializa

2、ble和Externalizable接口序列化的過程:只有實現了Serializable和Externalizable接口的類的對象才能進行序列化操作。Externalizable接口繼承自Serializable口,實現Externalizable接口的類需要自行控制序列化的行為。實現Serializable接口的類采用默認的序列化方式。JDK類庫中的部分類(String,封裝類和Date類等)都實現了Serializable接口。ObjectInputStream和ObjectOutputStream(2)對象輸入和輸出流構造方法:ObjectI

3、nputStream(InputStreamin)ObjectOutputStream(OutputStreamout)見源文件:ObjectSerTest.javaObjectInputStreamObjectInputStream按照默認方式進行反序列化時,具有以下特點:(1)如果內存中對象所屬的類還沒有加載,那么會加載并初始化這個類。如果在classpath中找不到相應的類文件,拋出ClassNotFoundException。(2)在反序列化時不會調用類的任何構造方法。對象序列化注意的問題:(1)序列化和反序列化的順序要一致(2)保存對象的文

4、件名一般不要用.txt文件,換成.obj或.ser文件最好對象序列化ObjectOutputStream只能對實現了Serializable接口的類的對象進行默認的序列化操作,這種操作僅僅為對象的非transient和非static的實例變量進行序列化。見源文件:ObjectSerTest1.java注意:靜態(tài)變量屬于類,不屬于對象。靜態(tài)變量在類加載的時候初始化,將含有靜態(tài)變量的對象的序列化和反序列化分開在不同的進程中,以得到正確結果。見源文件:WriteStudent.javaReadStudent.javatransient成員變量transie

5、nt變量不能被序列化,那么可以修飾以下類型的變量。(1)實例變量不代表對象的固有的內部數據,僅僅代表具有一定邏輯含義的臨時數據?!?.privateStringfirstName;privateStringlastName;privatetransientStringfullName;(2)實例變量表示一些比較敏感的信息(密碼等),出于安全方面的原因不希望被序列化。(3)實例變量需要按照用戶自定義的方式序列化,如經過加密后再序列化。具有關聯關系的對象之間的序列化ClassTeacherimplementsSerializable{…………priv

6、ateSetstu=newHashSet();}當序列化Teacher對象時,系統(tǒng)還會序列化Teacher所關聯的其他可序列化的對象(Student對象)。ABCEDGHF自定義序列化方式-Serializable接口自定義序列化方式,在可序列化類中定義下面兩個方法:privatevoidwriteObject(ObjectOutputStreamout)throwsIOExceptionprivatevoidreadObject(ObjectInputStreamin)throwsIOException,Clas

7、sNotFoundException注意:上述兩個方法不是java.io.Serializable接口中定義的方法自定義序列化方式-Serializable接口自定義序列化方式常用于以下情況:確保序列化的安全性,對敏感信息加密后再序列化,在反序列化時先解密。見源文件:ObjSerSecurity.java(2)確保對象的成員變量符合正確的約束條件。見源文件:ObjSerConstraint.java(3)能夠優(yōu)化序列化的性能見源文件:ObjSerCapacity.javaObjSerOptimizeCapacity.java注意:需要按自定義方式序列

8、化的成員變量,是否定義為transient類型無關緊要。自定義序列化方式-Externalizable接口E

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯系客服處理。