1. 程式人生 > >Java序列化問題總結

Java序列化問題總結

下面是一些複雜物件情況下一些總結:

l   當父類繼承Serializable介面,所有子類都可以被序列化
l   子類實現了Serializable介面,父類沒有,父類中的屬性不能序列化(不報錯,資料會丟失),但是子類中屬性人能正確序列化
l   如果序列化的屬性是物件,這個物件也必須實現Serializable介面,否則會報錯
l   在反序列化時,如果物件的屬性有修改或刪減,修改的部分屬性會丟失,但不會報錯
l   在反序列化時,如果serialVersionUID被修改,那麼反序列化時會失敗
l   如果一個父類沒有實現Serializable介面,他的內部類如果不是static的,即使實現了序列化介面,也會序列失敗。因為非靜態內部類會儲存一個指向父類的型別this變數,而序列化類的所有屬性必須實現序列化介面,所以要將內部類設定成靜態類
l   List或者Map容器中包含的泛型型別也必須實現Serializable介面,否則也會報java.io.NotSerializableException