摘要:目的在于,傳送對象的狀態(tài),也就是屬性值反序列化后的對象還可以保存到硬盤上。實(shí)現(xiàn)接口,并增加與這個(gè)方法來自定義某些屬性的序列化。在序列化和反序列化的過程中自定義序列化,我們還可以根據(jù)版本號來選擇性的序列化那些變化的屬性的狀態(tài)。
序列化Serializable
作用
1.當(dāng)2個(gè)進(jìn)程在進(jìn)行遠(yuǎn)程通信時(shí),相互發(fā)送數(shù)據(jù),數(shù)據(jù)都是以二進(jìn)制的形式傳送的。如果我們要傳輸對象的話,就需要把對象轉(zhuǎn)化為字節(jié)數(shù)組(二進(jìn)制數(shù)據(jù)),接收方接收后反序列成對象。目的在于,傳送對象的狀態(tài),也就是屬性值
2.反序列化后的對象還可以保存到硬盤上。
實(shí)現(xiàn)方式
1.實(shí)現(xiàn)Serializable接口。
2.實(shí)現(xiàn)Serializable接口,并增加void writeObject(ObjectOutputStream out) throws IOException與void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException這2個(gè)方法來自定義某些屬性的序列化。
3.實(shí)現(xiàn)Externalizable接口(該接口繼承自Serializable接口),并重寫writeExtername與readExternal方法來完全自定義要序列化的屬性。
顯式定義serialVersionUID屬性的作用
1.對于一個(gè)要進(jìn)行序列化的類,我們希望類的不同版本對序列化兼容(這個(gè)類可能前前后后對字段進(jìn)行刪改),如果不顯式設(shè)置id,這個(gè)類的每個(gè)版本的id(由系統(tǒng)生成)都是不一樣的。那么反序列化的時(shí)候,永遠(yuǎn)只能反序列化最新的實(shí)例了(舊的實(shí)例因?yàn)閕d不一致將失敗)。
2.所以要保證兼容的話,就需要設(shè)置一個(gè)顯式的id。那么在序列化舊的實(shí)例時(shí),新添加的或更改的字段會(huì)被設(shè)置為null,刪除的字段不設(shè)置。
3.如果我們不想兼容不同版本,我們還可以為不同的版本再設(shè)置一個(gè)版本號。在序列化和反序列化的過程中(自定義序列化),我們還可以根據(jù)版本號來選擇性的序列化那些變化的屬性的狀態(tài)。
在springmvc里,javabean都要實(shí)現(xiàn)Serializable接口,并生成顯式id
其目的就是我們上面分析的序列化的作用以及顯式id的作用,特別是在遠(yuǎn)程服務(wù)調(diào)用的項(xiàng)目中。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77267.html
摘要:格式術(shù)語說明塊狀結(jié)構(gòu)指的是一個(gè)類,方法或構(gòu)造函數(shù)的主體。方法名或構(gòu)造函數(shù)名與左括號留在同一行。空白垂直空白以下情況需要使用一個(gè)空行類內(nèi)連續(xù)的成員之間字段,構(gòu)造函數(shù),方法,嵌套類,靜態(tài)初始化塊,實(shí)例初始化塊。 前言 這份文檔是Google Java編程風(fēng)格規(guī)范的完整定義。當(dāng)且僅當(dāng)一個(gè)Java源文件符合此文檔中的規(guī)則, 我們才認(rèn)為它符合Google的Java編程風(fēng)格。 與其它的編程風(fēng)格...
摘要:引言到目前為止,我們已經(jīng)構(gòu)建了一個(gè)有工作量證明機(jī)制的區(qū)塊鏈。在今天的內(nèi)容中,我們會(huì)將區(qū)塊鏈持久化到一個(gè)數(shù)據(jù)庫中,然后會(huì)提供一個(gè)簡單的命令行接口,用來完成一些與區(qū)塊鏈的交互操作。這同樣也意味著,一個(gè)也就是區(qū)塊鏈的一種標(biāo)識(shí)符。 翻譯的系列文章我已經(jīng)放到了 GitHub 上:blockchain-tutorial,后續(xù)如有更新都會(huì)在 GitHub 上,可能就不在這里同步了。如果想直接運(yùn)行代碼...
摘要:學(xué)堂碼匠本期繼續(xù)走入算法冒泡排序法。冒泡排序法完整代碼冒泡排序法的優(yōu)化假如序列的數(shù)據(jù)為使用上面的冒泡排序法進(jìn)行排序,得到的結(jié)果肯定沒有問題,但是,待排序的序列是有序的,理論上是無需遍歷排序。 HTML5學(xué)堂-碼匠:本期繼續(xù)走入算法 —— 冒泡排序法。冒泡排序算法相對簡單,容易上手,穩(wěn)定性也比較高,算是一種較好理解的算法,也是面試官高頻提問的算法之一。 Tips:關(guān)于算法及排序的基礎(chǔ)知識(shí)...
摘要:用于把對象序列化字符串,在序列化對象時(shí),所有函數(shù)及原型成員都會(huì)被有意忽略,不體現(xiàn)在結(jié)果中。對第步返回的每個(gè)值進(jìn)行相應(yīng)的序列化。參考文檔高級程序設(shè)計(jì)作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburW1?w=658&h=494); JSON與JavaScript對象 JSON是一種表示結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)格式,語...
閱讀 885·2021-10-13 09:39
閱讀 3536·2021-09-26 10:16
閱讀 2875·2019-08-30 15:54
閱讀 1051·2019-08-30 14:22
閱讀 2894·2019-08-29 15:39
閱讀 3261·2019-08-27 10:52
閱讀 816·2019-08-26 13:59
閱讀 1711·2019-08-26 12:20