亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關于Java實體類Serializable序列化接口的作用和必要性解析

 更新時間:2023年05月18日 10:38:42   作者:不放糖的苦咖啡  
序列化是將對象狀態(tài)轉化為可保持或者傳輸的格式過程,與序列化相反的是反序列化,完成序列化和反序列化,可以存儲或傳輸數據,一般情況下,在定義實體類時會使用Serializable,需要的朋友可以參考下

在Java Web編程中,很多實體類會實現Serializable 接口,但是很多實體在使用中并沒有序列化也能正常使用。

定義:把對象轉換為字節(jié)序列的過程稱為對象的序列化

把字節(jié)序列恢復為對象的過程稱為對象的反序列化

那么Serializable 接口有什么作用呢?

Serializable作為序列化的一種方式。

序列化可以理解為一種機制,按照一定的格式將Java 對象的某種狀態(tài)轉成介質可以接受的形式,以便存儲或傳輸。

序列化實現將Java 對象相關的類信息、屬性及屬性值等等保存起來,便于存儲和傳輸。

序列化的作用可以總結以下:

(1)提供一種簡單又可拓展的對象保存恢復機制

(2)對于遠程調用,能方便對對象進行編碼和解碼,就像實現對象直接傳輸

(3)可以將對象持久化到介質中,就像實現對對象直接存儲。

(4)允許對象自定義外部存儲的格式。

序列化的簡單理解方式:

序列化的過程,就是一個“freeze”的過程,它將一個對象freeze(冷凍)住,然后進行存儲,等到再次需要的時候,再將這個對象de-freeze就可以立即使用。我們以為的沒有進行序列化,其實是在聲明的各個不同變量的時候,由具體的數據類型幫助我們實現了序列化操作。如果有人打開過Serializable接口的源碼,就會發(fā)現,這個接口其實是個空接口,那么這個序列化操作,到底是由誰去實現了呢?其實,看一下接口的注釋說明就知道,當我們讓實體類實現Serializable接口時,其實是在告訴JVM此類可被序列化,可被默認的序列化機制序列化。

例子:

@Data
@ToString
public class UserRole implements Serializable {
    private static final long serialVersionUID = -6056129805075132981L;
    private int id;
    private int user_id;
    private int role_id;
}

一個實體類User實現Serializable接口,并且定義了serialVersionUID變量。

serialVersionUID是用來輔助對象的序列化與反序列化的,原則上序列化后的數據當中的serialVersionUID與當前類當中的serialVersionUID一致,那么該對象才能被反序列化成功。

工作機制:在序列化的時候系統(tǒng)將serialVersionUID寫入到序列化的文件中去,當反序列化的時候系統(tǒng)會先去檢測文件中的serialVersionUID是否跟當前的文件的serialVersionUID是否一致,如果一直則反序列化成功,否則就說明當前類跟序列化后的類發(fā)生了變化。

到此這篇關于關于Java實體類Serializable序列化接口的作用和必要性解析的文章就介紹到這了,更多相關Java序列化接口Serializable內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java數組去重復的18種方法示例

    Java數組去重復的18種方法示例

    這篇文章主要為大家介紹了Java數組去重復的18種寫法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Maven本地倉庫的配置以及修改默認.m2倉庫位置

    Maven本地倉庫的配置以及修改默認.m2倉庫位置

    今天小編就為大家分享一篇關于Maven本地倉庫的配置以及修改默認.m2倉庫位置的文章,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 關于Java的ArrayList數組自動擴容機制

    關于Java的ArrayList數組自動擴容機制

    這篇文章主要介紹了關于Java的ArrayList數組自動擴容機制,ArrayList底層是基于數組實現的,是一個動態(tài)數組,自動擴容,不是線程安全的,只能用在單線程環(huán)境下,需要的朋友可以參考下
    2023-05-05
  • java實現猜字母游戲

    java實現猜字母游戲

    這篇文章主要為大家詳細介紹了java實現猜字母小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java countDownLatch如何實現多線程任務阻塞等待

    Java countDownLatch如何實現多線程任務阻塞等待

    這篇文章主要介紹了Java countDownLatch如何實現多線程任務阻塞等待,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java代碼重構的幾種模式詳解

    Java代碼重構的幾種模式詳解

    這篇文章詳細介紹了Java代碼重構的幾種模式,有需要的朋友可以參考一下
    2013-10-10
  • Springboot整合activemq的方法步驟

    Springboot整合activemq的方法步驟

    這篇文章主要介紹了Springboot整合activemq的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • java實習--每天打卡十道面試題!

    java實習--每天打卡十道面試題!

    臨近秋招,備戰(zhàn)暑期實習,祝大家每天進步億點點!本篇文章準備了十道java的常用面試題,希望能夠給大家提供幫助,最后祝大家面試成功,進入自己心儀的大廠
    2021-06-06
  • SpringBoot實現前端驗證碼圖片生成和校驗

    SpringBoot實現前端驗證碼圖片生成和校驗

    這篇文章主要為大家詳細介紹了SpringBoot實現前端驗證碼圖片生成和校驗,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • jedis操作redis的幾種常見方式總結

    jedis操作redis的幾種常見方式總結

    Redis是一個著名的key-value存儲系統(tǒng),也是nosql中的最常見的一種,這篇文章主要給大家總結了關于在java中jedis操作redis的幾種常見方式,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-05-05

最新評論