[英]Serialisation and sub-classes
如果我將一個類定義為Serialiable,那么當我創建一個子類時,它會要求我定義一個serialVersionUID。 這是必要的還是我可以依靠超級班的?
我曾經將SerialVersionUID聲明為單獨的(可能是頂級的),如:
public static final long GlobalSerialVersionUID=0L;
然后在每個Serializable
類中聲明:
private static final long serialVersionUID = MyTopClass.GlobalSerialVersionUID;
這種方法可以保證您將始終擁有相同的SerialVersionUID,並且如果您要在不同的序列化版本之間實現數據交換 - 您可以在不同的序列化版本之間分支代碼。
如果更改類的實現,但仍希望能夠序列化/反序列化以“舊”格式保存的對象,則使用SerialVersionUID。 所以這意味着你必須在子類中實現它,如果你想改變子類而不是超類。 但是,如果您不需要這個“版本控制”,則根本不必使用SerialVersionUID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.