1. 程式人生 > >java序列化小彙總

java序列化小彙總

java序列化中的兩個介面java.io.Serializable 和 java.io.Externalizable

兩介面的區別如下

1:

關鍵字 Serializable Externalizable
static 修飾的欄位不能被序列化 修飾的欄位可以被序列化
transient 修飾的欄位不能被序列化 修飾的欄位可以被序列化
servialversionUID 反序列化時會判斷此屬性的值是否和序列化時一致 反序列化時會判斷此屬性的值是否和序列化時一致

2:Serializable介面只是一個標示性介面,實現此介面的類,不需要實現任何方法。同時Serializable是Externalizable的父介面。

可以通過實現Externalizable來控制類的序列化和反序列化,通過重寫Externalizable介面的writeExternal來控制序列化,重寫readExternal來控制反序列化。

兩介面的相同點

1:如果要將一個類序列化,都要通過ObjectOutputStream類的writeObject()方法,反序列化都要通過ObjectInputStream類的readObeject()方法。