1. gzyueqian
      13352868059

      Java培訓:Java中的可序列化和可外部化接口是什么?

      更新時間: 2022-04-15 10:00:44來源: 粵嵌教育瀏覽量:11588

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

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

        因此,簡而言之,如果序列化是自動將對象狀態(tài)轉換為字節(jié)流的機制,那么外部化也是如此,但在將對象狀態(tài)轉換為字節(jié)流時給予程序員控制權。

        可序列化接口

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



        可外部化接口

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

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

        比較 Serializable 和 Externalizable 接口

        一個實現 Serializable 接口的類,對象持久化會自動啟動,無需程序員的任何干預。雖然是一個實現 Externalizable 接口的類,但提供序列化規(guī)范是程序員的責任。

        由于在實現 Serializable 接口的情況下,序列化過程是自動的,因此該過程的性能沒有改進的余地。Externalizable 接口提供對過程的完全控制,并可用于提高性能。

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

        結論

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


      免費預約試聽課

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

      
      

      1. 日本一本之道高清不卡免 | 日本在线视频中文有码 | 午夜福利亚洲国产不卡顿 | 综合欧美亚洲日本 | 亚洲中文不卡DvD | 三级日本成网人站 |