gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:30:17 24 4
gpt4 key购买 nike

如果您采用从未明确指定 serialVersionUID 的旧可序列化对象,并将 serialVersionUID 添加到该对象,会发生什么情况?在我看来,下次最终用户更新应用程序时,它会尝试反序列化光盘中的数据,发现 serialVersionUID 不匹配,用来自服务器/数据库/任何内容的新数据覆盖数据,然后你很好。我的这个假设是否正确?这样做还有什么我应该注意的问题吗?

private class X implements serializable {...

private static final long serialVersionUID = 0L;

最佳答案

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

It seems to me that the next time the app was updated by endusers it would try to deserialize data from disc

正确。

find out that the serialVersionUID didn't match

只有当它真的不匹配时。如果您遵循上述建议,它将匹配。

overwrite the data with new data from the server/db/whatever

不正确。见上文。

and after that you're fine.

没有。

Am I correct in this assumption?

没有。

关于java - Android:如果我将 serialVersionUID 添加到旧的可序列化对象会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32069590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com