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

时间:2015-08-18 10:15:35

标签: java android serializable

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

private class X implements serializable {...

private static final long serialVersionUID = 0L;

1 个答案:

答案 0 :(得分:2)

  1. 如果你给它的相同值,就像现在在课堂上运行serialver工具一样,没有任何反应。
  2. 如果您给它一个不同的值,那么包含该类的现有串行流的进一步反序列化将失败并显示InvalidClassException
  3.   

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

    正确。

      

    发现serialVersionUID与

    不匹配

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

      

    使用来自server / db /的任何

    的新数据覆盖数据

    不正确的。见上文。

      

    之后你很好。

    没有

      

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

    没有