1. gzyueqian
      18078865874

      Java培訓(xùn):Java中的可序列化和可外部化接口是什么?

      更新時(shí)間: 2022-04-15 10:00:44來(lái)源: 粵嵌教育瀏覽量:11723

        在 Java 中,序列化過(guò)程通過(guò)實(shí)現(xiàn) Serializable 接口自動(dòng)發(fā)生,這意味著程序員無(wú)法控制幕后發(fā)生的整個(gè)過(guò)程。如果我們想序列化一個(gè)包含很多屬性和屬性的對(duì)象,或者使用自定義加密來(lái)操作要持久化的字節(jié),這是不可能的。想學(xué)習(xí)java的同學(xué)可以參加java培訓(xùn),在專業(yè)老師的帶領(lǐng)下,可以獲得快速提升。

        此外,序列化一個(gè)臃腫的對(duì)象并通過(guò)網(wǎng)絡(luò)傳輸它的成本很高。因此,出于許多這樣的原因,我們希望對(duì) Java 中的可序列化性進(jìn)行一些控制。這就是外化發(fā)揮作用的地方。通過(guò) Externalizable 接口的外部化機(jī)制提供了實(shí)現(xiàn)我們自己的序列化邏輯的機(jī)會(huì)。

        因此,簡(jiǎn)而言之,如果序列化是自動(dòng)將對(duì)象狀態(tài)轉(zhuǎn)換為字節(jié)流的機(jī)制,那么外部化也是如此,但在將對(duì)象狀態(tài)轉(zhuǎn)換為字節(jié)流時(shí)給予程序員控制權(quán)。

        可序列化接口

        在 Java 中,序列化是通過(guò) Serializable 接口實(shí)現(xiàn)的。對(duì)序列化感興趣的類在其設(shè)計(jì)期間實(shí)現(xiàn)此接口。因此,可以利用序列化機(jī)制的工具保存和恢復(fù)此類的實(shí)例。Serializable 接口不包含任何成員。任何實(shí)現(xiàn)此接口的類都表明該類的對(duì)象是可序列化的。從此類派生的任何子類也繼承可序列化屬性。但是,聲明為瞬態(tài)或靜態(tài)的成員不可序列化,因此不會(huì)持久化。



        可外部化接口

        Externalizable 接口提供對(duì)序列化過(guò)程的控制。與 Serializable 接口類似,實(shí)現(xiàn) Externalizable 接口的類被標(biāo)記為持久化,除了那些聲明為瞬態(tài)或靜態(tài)的成員。因?yàn)閠ransient關(guān)鍵字指定了一個(gè)不被持久化的字段,所以我們可以在任何我們不想被序列化的字段上使用它。在java培訓(xùn)中,有更加系統(tǒng)全面的課程,明確清晰的學(xué)習(xí)路線,學(xué)習(xí)起來(lái)既輕松,又高效。

        同樣,用 static 關(guān)鍵字標(biāo)記的字段也不會(huì)僅僅因?yàn)殪o態(tài)字段不屬于對(duì)象而是屬于類而被序列化。與沒(méi)有成員的 Serializable 接口相比,Externalizable 接口提供了兩個(gè)方法,稱為 readExternal() 和  writeExternal(),我們可以在其中編寫自己的序列化規(guī)則集。

        比較 Serializable 和 Externalizable 接口

        一個(gè)實(shí)現(xiàn) Serializable 接口的類,對(duì)象持久化會(huì)自動(dòng)啟動(dòng),無(wú)需程序員的任何干預(yù)。雖然是一個(gè)實(shí)現(xiàn) Externalizable 接口的類,但提供序列化規(guī)范是程序員的責(zé)任。

        由于在實(shí)現(xiàn) Serializable 接口的情況下,序列化過(guò)程是自動(dòng)的,因此該過(guò)程的性能沒(méi)有改進(jìn)的余地。Externalizable 接口提供對(duì)過(guò)程的完全控制,并可用于提高性能。

        Serializable 和 Externalizable 接口都用于對(duì)象序列化。Serializable 接口沒(méi)有成員,而 Externalizable 接口包含兩個(gè)方法:readExternal() 和 writeExternal()。

        結(jié)論

        序列化和反序列化過(guò)程的主要用途是在沒(méi)有程序員直接干預(yù)的情況下啟用保存和恢復(fù)對(duì)象狀態(tài)功能。這是通過(guò) Serializable 接口自動(dòng)完成的。但是,在某些情況下,我們希望控制這些過(guò)程,例如在對(duì)象序列化期間吸收壓縮或加密設(shè)施。這只能通過(guò) Enternalizable 接口實(shí)現(xiàn)。想學(xué)習(xí)java更多技能,建議參加java培訓(xùn),課程實(shí)時(shí)更新,緊跟市場(chǎng)和企業(yè),讓你學(xué)到最新的java技能,提高市場(chǎng)競(jìng)爭(zhēng)力。


      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 中文字幕在线制服丝袜 | 婷婷色一二三区波多野衣 | 三级乱子国语在线观看 | 天天看片国产区 | 香蕉精品亚洲二区在线观看 | 日本在线看片免费人成视频 |