[英]searialVersionUID updating a class understanding
我有一個包含變量ABC的序列化類。 我在類中聲明了一個serialVersionUID。 我使用向量將類的實例保存到文本文件中。 如果我要更改類(添加變量D),我現在有2個不同的類(我試圖從文件中讀取的ABC,以及文件中的ABCD)。 如果我保持serialVersionUID相同,它會忽略D感覺我想讀的只有ABC嗎? 例:
Class MyClass implements serializable
{
serialVersionUID = 12345;
int a = 0;
int b = 0;
int c = 0;
}
Class implmentation
{
MyClass me = new MyClass();
me.a = 2;
me.b = 4;
me.c = 6;
}
//使用objectOutputStream保存到txt文件
//稍后更改myClass以添加int d = 0;
如果我想從文本文件中讀取原始myClass對象(我),它仍然能夠讀取它嗎?
對不起,我沒有SSCCE,但我想在開始處理之前驗證。
請看這里http://denis-zhdanov.blogspot.com/2009/09/serialversionuid-update-policy-on-class.html
刪除字段 - 如果在類中刪除某個字段,則寫入的流將不包含其值。 當流由較早的類讀取時,該字段的值將設置為默認值,因為流中沒有可用的值。 但是,此默認值可能會對早期版本履行合同的能力產生不利影響;
添加字段 - 當重構的類具有不在流中出現的字段時,對象中的該字段將初始化為其類型的默認值。 如果需要特定於類的初始化,則類可以提供readObject方法,該方法可以將字段初始化為非默認值;
您可以參閱對象序列規范的對象版本控制部分,而不是依賴未經審核的未審核的第三方博客。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.