簡體   English   中英

序列化和子類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM