Java 我是否能够成功地反序列化类的早期版本?

Java 我是否能够成功地反序列化类的早期版本?,java,serialization,deserialization,Java,Serialization,Deserialization,我有一节这样的课 class MyClass implements MyInterface, Serializable { private static final serialVersionUID = 42; ... } interface MyInterface { void A(); void B(); } 我在数据库中保存了MyClass的一些序列化实例 现在,我将向MyInterface添加一个新函数,使其成为: interface MyInterface { void A();

我有一节这样的课

class MyClass implements MyInterface, Serializable {
private static final serialVersionUID = 42;
...
}

interface MyInterface {
void A();
void B();
}
我在数据库中保存了MyClass的一些序列化实例

现在,我将向MyInterface添加一个新函数,使其成为:

interface MyInterface {
void A();
void B();
void C();
}
我已经在MyClass中实现了
C()


我以前序列化的实例是否将反序列化为新类而没有问题?我想是的,但如果可能的话,我想通过解释来确认。

是的,只要SerialVersionId保持不变,添加新函数应该不会有问题,因为Java在序列化对象时只保留字段信息

发件人:

通过使用writeObject方法将各个字段写入ObjectOutputStream来保存[序列化对象的]状态


如果serialVersionUID在修改后的类中相同,序列化将尽力将数据反序列化到新类中,忽略任何差异