gpt4 book ai didi

java - 在实现可序列化的类上使用 serialVersionUID 和 @SuppressWarnings ("serial"的优缺点是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:33 26 4
gpt4 key购买 nike

这个问题一直是我团队中一些热烈讨论的主题。我个人的选择是使用

@SuppressWarnings("serial")

我的想法是,与使用相比,这意味着需要维护的东西少了

serialVersionUID

我是否认为使用它允许编译器生成 UID,因此更有可能获取对类的更改?

我最担心的是,依赖于开发人员在更改类时更改 UID 更有可能导致无法预料的错误。

我的方法有什么缺陷吗?有没有其他人在使用这两种方法时有好的或坏的经历?

最佳答案

归结为以下问题:

  • 序列化流应该由相同的代码还是由不同的代码读取和写入?

“不同的代码”可能意味着几件事:

  • 旧版本与新版本
  • 两个独立的程序,可能有新旧库
  • 更多类似的东西。

在这些情况下,您应该强烈遵守序列化契约 - 这不是通过设置 serialVersionUId 完成的 - 通常您还必须覆盖序列化和反序列化的方法以应对不同的版本。

如果 - 另一方面 - 同一个程序读取和写入诸如内部缓存之类的东西,并且可以在软件更新时从头开始重建该缓存 - 那么请随意让您的生活像您一样轻松可以。

当然,在这些极端之间存在各种灰色阴影。

关于java - 在实现可序列化的类上使用 serialVersionUID 和 @SuppressWarnings ("serial"的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636437/

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