序列化:將數(shù)據(jù)結構或對象轉換成二進制串的過程。
反序列化:將在序列化過程中所生成的二進制串轉換成數(shù)據(jù)結構或者對象的過程。
Parcelable 與 Serializeable 的區(qū)別
Serializable | Parcelable |
---|---|
通過IO對硬盤操作,速度較慢 | 直接在內存操作,效率高,性能好 |
大小不受限制 | 一般不能超過1M,修改內核也只能4M |
大量使用反射,產(chǎn)生內存碎片 |
有關序列化的幾個問題
什么是serialVersionUID?如果你不定義這個,會發(fā)生什么?
假如你有一個類,它序列化并存儲在持久性中,然后修改了該類以添加新字段,如果對已序列化的對象進行反序列化,會發(fā)生什么情況?
答:serialVersionUID是一個private static final long類型的ID,當它被印在對象上,它通常是對象的哈希碼,你可以使用serialver這個JDK工具來查看序列化對象的serialVersionUID。不指定serialVersionUID的后果是,當你添加或修改類中的任何字段時,則已序列化類將無法恢復,因為為新類和舊序列化對象生產(chǎn)的serialVersionUID將有所不同。Java序列化過程依賴于正確的序列化對象恢復狀態(tài)的,并在序列化對象序列版本不匹配的情況下引發(fā)java.io.InvalidClassException無效類異常。
序列化時,你希望某些成員不要序列化?你如何實現(xiàn)它?
答:有時候也會變著形式問,比如問什么是瞬態(tài)trasient變量,瞬態(tài)和靜態(tài)變量會不會得到序列化等,所以,如果你不希望任何字段是對象的狀態(tài)的一部分,然后聲明它靜態(tài)或瞬態(tài)根據(jù)你的需要,這樣就不會是Java序列化過程中被包含在內
如果一個類中的一個成員為實現(xiàn)可序列化接口,會發(fā)生什么情況?
答:如果嘗試序列化實現(xiàn)可序列化的類的對象,但該對象包含對不可序列化類的引用,則在運行時將引發(fā)不可序列化異常NotSerializableException
如果類是可序列化的,但其超類不是,則反序列化后從超級類繼承的實例變量的狀態(tài)如何?
答:Java序列化過程僅在對象層次都是可序列化結構中繼續(xù),即實現(xiàn)Java中可序列化接口,并且從超級類繼承的實例變量的值將通過調用構造函數(shù)初始化,在反序列化過程中不可序列化的超級類
是否可以自定義序列化過程,或者是否可以覆蓋Java中的默認序列化過程?
假設新類的超級類實現(xiàn)可序列化接口,如何避免新類被序列化?
答:對于序列化一個對象需調用ObjectOutputStream.writeObject(saveThisObject),并用ObjectInputStream.readObject()讀取對象,但Java虛擬機為你提供的還有一件事,是定義這個兩個方法。如果在類中定義這兩個方法,則JVM將調用這兩個方法,而不是應用默認序列化機制。你可以在此處通過執(zhí)行任何類型的預處理或后處理任何來自定義對象序列化和反序列化的行為。
在Java中的序列化和反序列化過程中使用哪些方法?
答:考察你是否熟悉readObject()的用法、writeObject()、readExternal()和writeExternal()。Java序列化由java.io.ObjectOutputStream類完成。該類是一個篩選器流,它封裝在較低級別的字節(jié)流中,以處理序列化機制。要通過序列化機制存儲任何對象,我們調用ObjectOutputStream.writeObject(savethisobject),并反序列化該對象,我們稱之為ObjectInputStream.readObject()方法。調用以writeObject()方法在java中觸發(fā)序列化過程。關于readObject()方法,需要注意的一點很重要一點是,它用于從持久性讀取字節(jié),并從這些字節(jié)創(chuàng)建對象,并返回一個對象,該對象需要類型強制轉換為正確的類型。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站題目:序列化--Serial-創(chuàng)新互聯(lián)
當前路徑:http://jinyejixie.com/article8/dpesop.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、商城網(wǎng)站、虛擬主機、網(wǎng)站營銷、自適應網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容