簡體   English   中英

searialVersionUID更新了一個類的理解

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

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