摘要:前言什么是序列化將對象編碼成一個字節流,這樣一來就可以在通信中傳遞對象了。比如在一臺虛擬機中被傳遞到另一臺虛擬機中,或者字節流存儲到磁盤上。比如增加一個不是很重要的工具方法,自動產生的序列版本也會發生變化,則會出現序列版本不一致的情況。
前言
什么是序列化:將對象編碼成一個字節流,這樣一來就可以在通信中傳遞對象了。比如在一臺虛擬機中被傳遞到另一臺虛擬機中,或者字節流存儲到磁盤上。
“關于Java的序列化,無非就是簡單的實現Serializable接口”這樣的說法只能說明停留在會用的階段,而我們想要走的更遠往往就需要了解更多的東西,比如:為什么要實現序列化?序列化對程序的安全性有啥影響?如何避免多余的序列化?.....
本文主要參考資料《Effective Java》,其中代碼除了只作部分說明,不能運行外,剩余代碼都是親自實踐過的!
一、序列化代價
雖然實現Serializable很簡單,但是為了序列化而付出的長期開銷往往是實實在在的。實現Serializable接口而付出的最大代價是,一旦一個類被發布,就大大降低了“改變這個類的實現”的靈活性。
問:這個靈活性具體是指什么呢?
即一旦類實現了Serializable接口,并且這個類被廣泛地使用,往往必須永遠支持這種序列化形式,如果使用默認的序列化形式,那么這種序列化形式將永遠地束縛在該類最初的內部表示法上,換句話說,一旦接受了默認的序列化形式,這個類中私有的和包級私有的實例域都變成導出的API的一部分,這顯然是不符合的。這也就是實現序列化往往需要考慮到的幾個代價,具體請往下看!
1、可能會導致InvalidClassException異常
如果沒有顯式聲明序列版本UID,對對象的需求進行了改動,那么兼容性將會遭到破壞,在運行時導致InvalidClassException。比如:增加一個不是很重要的工具方法,自動產生的序列版本UID也會發生變化,則會出現序列版本UID不一致的情況。所以最好還是顯式的增加序列版本號UID。
對User JavaBean實現Serializable接口,增加固定的序列版本號
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74172.html
摘要:本文已收錄修煉內功躍遷之路的為解決空的問題帶來了很多新思路,查看源碼,實現非常簡單,邏輯也并不復雜。 本文已收錄【修煉內功】躍遷之路 showImg(https://segmentfault.com/img/bVbrCvp?w=852&h=480); Java8的Optional為解決空的問題帶來了很多新思路,查看Optional源碼,實現非常簡單,邏輯也并不復雜。Stuart Ma...
摘要:導讀閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構師所要掌握的各類知識點,你也可以按照文章中所列的知識體系對比自身,對自己進行查漏補缺,覺得本文對你有幫助的話,可以點贊關注一下。目錄一基礎篇二進階篇三高級篇四架構篇五擴 導讀:閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構師所要掌握的各類知識點,你也可以按照文章中所列的知識體系對比自身,對自己...
摘要:事實上,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作。中可以通過設值注入方法注入和構造器注入實現,推薦使用的方式為設值注入。 寫在前面 春天來了,萬物復蘇的季節到了. 許多程序猿安奈不住生理需求,我要漲工資,我要跳槽. 畢竟金三銀四嘛. 那么要從眾多的面試者中獲得求職機會,我們就要面對很多的面試題. 程序猿是最煩面試題的.面試的公司也煩,面試的人也煩. 但是沒辦法.面試的人魚龍混...
摘要:在我的理解里,定向是這樣的中的定向表示了在跨進程通信中數據的流向,其中表示數據只能由客戶端流向服務端,表示數據只能由服務端流向客戶端,而則表示數據可在服務端與客戶端之間雙向流通。一類是用來定義方法接口,以供系統使用來完成跨進程通信的。 正文 1,概述 AIDL是一個縮寫,全稱是Android Interface Definition Language,也就是Android接口定義語言。...
摘要:本章中的大部分內容適用于構造函數和方法。第項其他方法優先于序列化第項謹慎地實現接口第項考慮使用自定義的序列化形式第項保護性地編寫方法第項對于實例控制,枚舉類型優先于第項考慮用序列化代理代替序列化實例附錄與第版中項目的對應關系參考文獻 effective-java-third-edition 介紹 Effective Java 第三版全文翻譯,純屬個人業余翻譯,不合理的地方,望指正,感激...
閱讀 2211·2021-11-22 13:54
閱讀 3376·2019-08-29 12:25
閱讀 3440·2019-08-28 18:29
閱讀 3579·2019-08-26 13:40
閱讀 3275·2019-08-26 13:32
閱讀 955·2019-08-26 11:44
閱讀 2229·2019-08-23 17:04
閱讀 2968·2019-08-23 17:02