java序列化小彙總
阿新 • • 發佈:2019-01-09
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()方法。