小编典典

Android:如果我将serialVersionUID添加到旧的可序列化对象会怎样?

java

如果您获取一个从未明确指定serialVersionUID的旧可序列化对象,然后将serialVersionUID添加到该对象,会发生什么?在我看来,下一次由最终用户更新应用程序时,它将尝试反序列化磁盘中的数据,发现serialVersionUID不匹配,用服务器/
db /中的新数据覆盖数据,然后再执行此操作很好。我对这个假设是否正确?在执行此操作时,我是否还要警惕其他问题?

private class X implements serializable {...

private static final long serialVersionUID = 0L;

阅读 183

收藏
2020-11-26

共1个答案

小编典典

  1. 如果您给它提供的值与serialver现在在类上运行该工具所显示的值相同,则什么也不会发生。
  2. 如果您赋予它不同的值,则包括该类的现有串行流的进一步反序列化将失败,并带有InvalidClassException

在我看来,下次由最终用户更新应用程序时,它将尝试反序列化光盘中的数据

正确。

找出serialVersionUID不匹配

仅当它确实不匹配时。如果您遵循上述建议,则它将匹配。

用服务器/数据库/任何地方的新数据覆盖数据

不正确 往上看。

然后你就没事了。

没有。

我对这个假设是否正确?

没有。

2020-11-26