Android:如果我将serialVersionUID添加到旧的可序列化对象会发生什么?

如果您使用一个从未显式指定serialVersionUID的旧的可序列化对象,并将serialVersionUID添加到该对象,会发生什么? 在我看来,下次应用程序被最终用户更新时,它会尝试从光盘反序列化数据,发现serialVersionUID不匹配,用来自server / db /的新数据覆盖数据,之后你好的。 我在这个假设中是否正确? 还有其他问题我应该警惕这样做吗?

private class X implements serializable {... private static final long serialVersionUID = 0L; 

  1. 如果通过在类上运行serialver工具显示的值与现在相同,则没有任何反应。
  2. 如果为其赋予不同的值,则包含该类的现有串行流的进一步反序列化将因InvalidClassException而失败。

在我看来,下次应用程序被最终用户更新时,它会尝试从光盘反序列化数据

正确。

发现serialVersionUID不匹配

只有它确实不匹配。 如果您遵循上面的建议,它将匹配。

用来自server / db /的新数据覆盖数据

不正确。 往上看。

之后你很好。

没有。

我在这个假设中是否正确?

没有。