您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)序列化在java中的定義,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
什么是序列化
序列化 (Serialization)是將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^程。在序列化期間,對象將其當(dāng)前狀態(tài)寫入到臨時(shí)或持久性存儲(chǔ)區(qū)。以后,可以通過從存儲(chǔ)區(qū)中讀取或反序列化對象的狀態(tài),重新創(chuàng)建該對象。
序列化使其他代碼可以查看或修改,那些不序列化便無法訪問的對象實(shí)例數(shù)據(jù)。確切地說,代碼執(zhí)行序列化需要特殊的權(quán)限:即指定了 SerializationFormatter 標(biāo)志的 SecurityPermission。在默認(rèn)策略下,通過 Internet 下載的代碼或 Internet 代碼不會(huì)授予該權(quán)限;只有本地計(jì)算機(jī)上的代碼才被授予該權(quán)限。
通常,對象實(shí)例的所有字段都會(huì)被序列化,這意味著數(shù)據(jù)會(huì)被表示為實(shí)例的序列化數(shù)據(jù)。這樣,能夠解釋該格式的代碼有可能能夠確定這些數(shù)據(jù)的值,而不依賴于該成員的可訪問性。類似地,反序列化從序列化的表示形式中提取數(shù)據(jù),并直接設(shè)置對象狀態(tài),這也與可訪問性規(guī)則無關(guān)。
對于任何可能包含重要的安全性數(shù)據(jù)的對象,如果可能,應(yīng)該使該對象不可序列化。如果它必須為可序列化的,請嘗試生成特定字段來保存不可序列化的重要數(shù)據(jù)。如果無法實(shí)現(xiàn)這一點(diǎn),則應(yīng)注意該數(shù)據(jù)會(huì)被公開給任何擁有序列化權(quán)限的代碼,并確保不讓任何惡意代碼獲得該權(quán)限。
序列化的實(shí)現(xiàn)
將需要被序列化的類實(shí)現(xiàn)Serializable接口,該接口沒有需要實(shí)現(xiàn)的方法,implements Serializable只是為了標(biāo)注該對象是可被序列化的,然后使用一個(gè)輸出流來構(gòu)造一個(gè)ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數(shù)為obj的對象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。
概念
序列化:把Java對象轉(zhuǎn)換為字節(jié)序列的過程。
反序列化:把字節(jié)序列恢復(fù)為Java對象的過程。
用途
1、以某種存儲(chǔ)形式使自定義對象持久化;
2、將對象從一個(gè)地方傳遞到另一個(gè)地方。
3、使程序更具維護(hù)性。
上述就是小編為大家分享的序列化在java中的定義了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。