序列化操作_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、為什么要對對象進行序列化操作今天晚上課程內(nèi)容提到對對象進行序列化操作其實我感覺有很多同學都不明白到底為什么要對對象進行序列化有很多疑問.大家也討論過一些.我個人的朦朧觀點在此也不知道對與不對對象序列化到底有什么好處?數(shù)據(jù)操作規(guī)范類似于還是等于XML文件保證數(shù)據(jù)一致性和安全性為什么要對對象進行序列化為什么不直接用數(shù)據(jù)庫來存儲數(shù)據(jù)采用數(shù)據(jù)流來存儲以數(shù)據(jù)流傳輸會提高網(wǎng)絡傳輸速度,在數(shù)據(jù)流進行操作可以直接操作數(shù)據(jù)流,少了對數(shù)據(jù)表進行操作的過程,

2、減少數(shù)據(jù)出錯的幾率.在具體的編程應用中那些地方會用的上?分布式計算網(wǎng)絡數(shù)據(jù)存取===============================================回來后Google一下相關文章發(fā)現(xiàn)這里講的似乎比較詳細.順便轉(zhuǎn)載一下.文章見:1_3407.html目前網(wǎng)絡上關于對象序列化的文章不少,但是我發(fā)現(xiàn)詳細敘述用法和原理的文章太少。本人把自己經(jīng)過經(jīng)驗總結和實際運用中的體會寫成的學習筆記貢獻給大家。希望能為整個java社區(qū)的

3、繁榮做一點事情。序列化的過程就是對象寫入字節(jié)流和從字節(jié)流中讀取對象。將對象狀態(tài)轉(zhuǎn)換成字節(jié)流之后,可以用java.io包中的各種字節(jié)流類將其保存到文件中,管道到另一線程中或通過網(wǎng)絡連接將對象數(shù)據(jù)發(fā)送到另一主機。對象序列化功能非常簡單、強大,在RMI、Socket、JMS、EJB都有應用。對象序列化問題在網(wǎng)絡編程中并不是最激動人心的課題,但卻相當重要,具有許多實用意義。對象序列化可以實現(xiàn)分布式對象。主要應用例如:RMI要利用對象序列化運行遠

4、程主機上的服務,就像在本地機上運行對象時一樣。java對象序列化不僅保留一個對象的數(shù)據(jù),而且遞歸保存對象引用的每個對象的數(shù)據(jù)??梢詫⒄麄€對象層次寫入字節(jié)流中,可以保存在文件中或在網(wǎng)絡連接上傳遞。利用對象序列化可以進行對象的“深復制”,即復制對象本身及引用的對象本身。序列化一個對象可能得到整個對象序列。從上面的敘述中,我們知道了對象序列化是java編程中的必備武器,那么讓我們從基礎開始,好好學習一下它的機制和用法。java序列化比較簡單,

5、通常不需要編寫保存和恢復對象狀態(tài)的定制代碼。實現(xiàn)java.io.Serializable接口的類對象可以轉(zhuǎn)換成字節(jié)流或從字節(jié)流恢復,不需要在類中增加任何代碼。只有極少數(shù)情況下才需要定制代碼保存或恢復對象狀態(tài)。這里要注意:不是每個類都可序列化,有些類是不能序列化的,例如回流中下一個Object。對象字節(jié)流并不傳輸類的字節(jié)碼,而是包括類名及其簽名。readObject()收到對象時,JVM裝入頭中指定的類。如果找不到這個類,則readObj

6、ect()拋出ClassNotFoundException如果需要傳輸對象數(shù)據(jù)和字節(jié)碼,則可以用RMI框架。ObjectInputStream的其余方法用于定制反序列化過程。例子如下:從文件中反序列化string對象和date對象FileInputStreamin=newFileInputStream(“tmp“)ObjectInputStreams=newObjectInputStream(in)Stringtoday=(String

7、)s.readObject()Datedate=(Date)s.readObject()定制序列化過程:序列化通??梢宰詣油瓿?,但有時可能要對這個過程進行控制。java可以將類聲明為serializable,但仍可手工控制聲明為static或transient的數(shù)據(jù)成員。例子:一個非常簡單的序列化類。publicclasssimpleSerializableClassimplementsSerializableStringsToday=

8、“Today:“transientDatedtToday=newDate()序列化時,類的所有數(shù)據(jù)成員應可序列化除了聲明為transient或static的成員。將變量聲明為transient告訴JVM我們會負責將變元序列化。將數(shù)據(jù)成員聲明為transient后,序列化過程就無法將其加進對象字節(jié)流中,沒有從transient數(shù)據(jù)成員發(fā)送的數(shù)據(jù)。后面數(shù)據(jù)反序列化時,要重建數(shù)據(jù)成員(因為它是類定義的一部分),但不包含任何數(shù)據(jù),因為這個數(shù)據(jù)成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論