更新時間:2020-06-02 14:44:10 來源:動力節點 瀏覽2244次
序列化是將對象的狀態信息轉換為可以儲存或者傳輸的形式的過程。因此在Java開發中,序列化是一個非常重要的環節。Java序列化可以在JVM停止運行之后能夠保存(持久化)制定的對象,并在將來重新讀取被保存的對象。
使用Java對象序列化,在保存對象時,會把其狀態保存為一組字節,在未來,再將這些字節組裝成對象。必須注意地是,對象序列化保存的是對象的"狀態",即它的成員變量。由此可知,對象序列化不會關注類中的靜態變量。
如何序列化
只要一個類實現了java.io.Serializable接口,那么它就可以被序列化。
serialversionuid作用
serialVersionUID適用于Java的序列化機制。簡單來說,Java的序列化機制是用判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地相應實體類的serialVersionUID進行比較,如果相同就認為是一致的,可以進行反序列化,否則就會出現序列化版本不一致的異常,即是InvalidCastException。
serialversionuid如何產生
在eclipse或者idea中,當實現了Serializable接口以后,在對應行左端會有一個黃色小嘆號,點擊,選擇generaterd serial version ID,就可以生產如圖所示的id。
private static final long serialVersionUID=1518830894504324355L;
代碼實例
Java序列化與反序列化相關知識
1.在Java中,只要一個類實現了java.io.Serializable接口,那么它就可以被序列化。
2.依靠ObjectOutputStream和ObjectInputStream對對象進行序列化及反序列化
3.虛擬機是否允許反序列化,不僅取決于類路徑和功能代碼是否一致,一個非常重要的一點是兩個類的序列化ID是否一致(就是private static final long serialVersionUID)
4.序列化并不保存靜態變量。
5.要想將父類對象也序列化,就需要讓父類也實現Serializable接口。
6.Transient關鍵字的作用是控制變量的序列化,在變量聲明前加上該關鍵字,可以阻止該變量被序列化到文件中,在被反序列化后,transient變量的值被設為初始值,如int型的是0,對象型的是null。
7.服務器端給客戶端發送序列化對象數據,對象中有一些數據是敏感的,比如密碼字符串等,希望對該密碼字段在序列化時,進行加密,而客戶端如果擁有解密的密鑰,只有在客戶端進行反序列化時,才可以對密碼進行讀取,這樣可以一定程度確保序列化對象的數據安全。
以上就是動力節點java培訓機構的小編針對“Java軟件開發教程之Java序列化介紹”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習