溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java序列化的知識點介紹

發(fā)布時間:2021-09-17 14:21:07 來源:億速云 閱讀:118 作者:chen 欄目:編程語言

本篇內容介紹了“java序列化的知識點介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

  序列化是將對象的狀態(tài)信息轉換為可以儲存或者傳輸?shù)男问降倪^程。因此在Java開發(fā)中,序列化是一個非常重要的環(huán)節(jié)。Java序列化可以在JVM停止運行之后能夠保存(持久化)制定的對象,并在將來重新讀取被保存的對象。

  使用Java對象序列化,在保存對象時,會把其狀態(tài)保存為一組字節(jié),在未來,再將這些字節(jié)組裝成對象。必須注意地是,對象序列化保存的是對象的"狀態(tài)",即它的成員變量。由此可知,對象序列化不會關注類中的靜態(tài)變量。

  如何序列化

  只要一個類實現(xiàn)了java.io.Serializable接口,那么它就可以被序列化。

  serialversionuid作用

  serialVersionUID適用于Java的序列化機制。簡單來說,Java的序列化機制是用判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節(jié)流中的serialVersionUID與本地相應實體類的serialVersionUID進行比較,如果相同就認為是一致的,可以進行反序列化,否則就會出現(xiàn)序列化版本不一致的異常,即是InvalidCastException。

  serialversionuid如何產生

  在eclipse或者idea中,當實現(xiàn)了Serializable接口以后,在對應行 左端會有一個黃色小嘆號,點擊,選擇generaterd serial version ID,就可以生產如圖所示的id。

  private static final long serialVersionUID = 1518830894504324355L;

  java序列化的知識點介紹

 

  代碼實例

  java序列化的知識點介紹

java序列化的知識點介紹

  序列化及反序列化相關知識

  1、在Java中,只要一個類實現(xiàn)了java.io.Serializable接口,那么它就可以被序列化。

  2、依靠ObjectOutputStreamObjectInputStream對對象進行序列化及反序列化

  3、虛擬機是否允許反序列化,不僅取決于類路徑和功能代碼是否一致,一個非常重要的一點是兩個類的序列化 ID 是否一致(就是 private static final long serialVersionUID)

  4、序列化并不保存靜態(tài)變量。

  5、要想將父類對象也序列化,就需要讓父類也實現(xiàn)Serializable 接口。

  6Transient 關鍵字的作用是控制變量的序列化,在變量聲明前加上該關鍵字,可以阻止該變量被序列化到文件中,在被反序列化后,transient 變量的值被設為初始值,如 int 型的是 0,對象型的是 null。

7服務器端給客戶端發(fā)送序列化對象數(shù)據,對象中有一些數(shù)據是敏感的,比如密碼字符串等,希望對該密碼字段在序列化時,進行加密,而客戶端如果擁有解密的密鑰,只有在客戶端進行反序列化時,才可以對密碼進行讀取,這樣可以一定程度確保序列化對象的數(shù)據安全。

“java序列化的知識點介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI