我是否能够成功反序列化我班级的先前版本?

Ale*_*tin 5 java serialization deserialization

我有这样的课

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

interface MyInterface {
void A();
void B();
}
Run Code Online (Sandbox Code Playgroud)

我已经在数据库中保存了一些MyClass的序列化实例.

现在,我正在向MyInterface添加一个新函数,因此它变为:

interface MyInterface {
void A();
void B();
void C();
}
Run Code Online (Sandbox Code Playgroud)

我已经C()在MyClass中实现了.

我以前的序列化实例是否会反序列化为新类没有问题?我想是的,但如果可能的话,想要确认一下解释.

100*_*000 3

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

\n\n

ObjectOutputStream

\n\n
\n

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

\n
\n