java I/O———序列化

所有的項目開發一定都有序列化的概念存在。

1.序列化的基本概念

對象序列化指的是:將內存中保存的對象變爲二進制數據流的形式進行傳輸,或者是將其保存在文本中。但是並不意味着所有類的對象都可以被序列化,嚴格來講,需要被序列化的類對象往往需要傳輸使用,同時這個類必須實現
java.io.Serializable接口。但是這個接口並沒有任何的方法定義,只是一個標識而已。

範例:定義可以被序列化對象的類

在這裏插入圖片描述

序列化對象時所需要保存的就是對象中的屬性,所以默認情況下對象的屬性將被轉爲二進制數據流存在。

2.序列化與反序列化

如果要想實現序列化與反序列化的對象操作,在java.io包中提供有兩個處理類:ObjectOutputStream、ObjectInputStream

首先來觀察這兩個類的定義結構及其各自的構造方法
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

範例:實現對象序列化

在這裏插入圖片描述

在這裏插入圖片描述

範例:實現對象反序列化

在這裏插入圖片描述

在以後實際項目的開發過程之中,你們根本就不需要知道如何實現序列化和反序列操作,因爲都會由各自的容器幫助你自動處理。

只會在SpringData操作Redis裏面纔會出現自己實現序列化的操作。

3.transient關鍵字

實際上序列化的處理在java.io包裏面有兩類,Serializable是使用最多的序列化接口,這種操作採用自動化模式完成,也就是說默認情況下所有的屬性都會被序列化下來。
還有一個Externalizable接口是需要用戶自己動手來處理序列化,一般很少使用。
但是由於Serializable默認會將對象中所有屬性進行序列化保存,如果現在某些屬性不希望被保存了,那麼就可以使用transient關鍵字。

範例:使用transient

在這裏插入圖片描述

大部分情況下使用序列化往往是在簡單java類上,其他類上使用序列化的操作模式相對較少。而如果是簡單java類,很少去使用transient關鍵字了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章