Java SearialVersionId更新类理解

Java SearialVersionId更新类理解,java,serialization,Java,Serialization,我有一个具有变量ABC的序列化类。我在类中声明一个serialVersionUID。我使用向量将类的一个实例保存到文本文件中。如果要更改类(添加变量D),我现在有两个不同的类(我试图从文件中读取的ABC和文件中的ABCD)。如果我保持serialVersionUID不变,它会不会感觉到我试图只读的内容只有ABC?例如: Class MyClass implements serializable { serialVersionUID = 12345; int a = 0;

我有一个具有变量ABC的序列化类。我在类中声明一个serialVersionUID。我使用向量将类的一个实例保存到文本文件中。如果要更改类(添加变量D),我现在有两个不同的类(我试图从文件中读取的ABC和文件中的ABCD)。如果我保持serialVersionUID不变,它会不会感觉到我试图只读的内容只有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对象(me),它还能读取吗

很抱歉,我没有SSCCE,但我想在开始处理此问题之前进行验证。

请查看此处

删除字段-如果在类中删除字段,则写入的流将不包含其值。当流被早期类读取时,字段的值将设置为默认值,因为流中没有可用的值。但是,该默认值可能会对早期版本履行其合同的能力产生不利影响


添加字段-当要重构的类具有流中不存在的字段时,对象中的该字段将初始化为其类型的默认值。如果需要特定于类的初始化,则该类可以提供一个readObject方法,该方法可以将字段初始化为非默认值

请参阅对象序列化规范的一节,而不是依赖于未经引用的未经查看的第三方博客