天天看點

Transient 與 序列化序列化transient關鍵字參考

序列化

        1:對象序列化:将對象轉換為位元組序列的形式表示,這些位元組包含對象包含的資料和資訊,便于傳輸和存儲。

        2:可序列化和反序列化需要該實體類實作Serializable接口。

transient關鍵字

        意義:讓被修飾的成員屬性變量不被序列化。具體就是Java的serialization提供了一種持久化對象執行個體的機制。當持久化對象時,可能有一個特殊的對象資料成員,我們不想用serialization機制來儲存它。為了在一個特定對象的一個域上關閉serialization,可以在這個域前加上關鍵字transient。

1:該成員變量可以被其他字段推出。

2:特殊字段不想被序列化:

        例如在java ArrayList源碼中,實作了java.io.Serializable接口,其中

transient Object[] elementData;

        elementData是一個緩存數組,初始容量為10,假如現在實際有了5個元素,那麼在序列化時隻需要儲存5個元素,數組中的最後五個元素是沒有實際意義的,不需要儲存。是以設計者将elementData設計為transient,然後在在writeObject方法中手動将其序列化,并且隻序列化了實際存儲的那些元素,而不是整個數組。

        作用:主要是為了節省空間吧。

參考

https://www.cnblogs.com/chenpi/p/6185773.html