gpt4 book ai didi

Java:可序列化的内部类和匿名类是否应该有 SerialVersionUID?

转载 作者:搜寻专家 更新时间:2023-11-01 02:48:58 24 4
gpt4 key购买 nike

虽然我目前不打算序列化任何东西,但我为所有可序列化的外部类以及静态嵌套类提供了 SerialVersionUID,因为这是正确的做法。

但是,我读过here那个

Serialization of inner classes (i.e., nested classes that are not static member classes), including local and anonymous classes, is strongly discouraged for several reasons. ...

所以我的问题是:

我应该给内部类和匿名类各一个SerialVersionUID,还是应该给它们添加一个@SuppressWarnings("serial")

一种方式比另一种方式更合适吗?

在任何情况下,我都会对此类类进行 transient 引用,因为我不希望它们被序列化。

最佳答案

给他们一个 serialVersionUID,因为:

  • 这是一个很好的通用做法,具体说明它肯定没有坏处。
  • 应该处理警告,而不是禁止警告。
  • 有时,当内部类变得足够大时,它们会更改为顶级类。

最好不要序列化那些内部类的实例(出于您链接到的文档中所述的所有原因)。我想,如果您偏执或担心其他开发人员可能不会做出同样好的判断,您可以通过在每个无条件抛出异常的内部类中使用 writeObject 方法来强制执行该选择。

关于Java:可序列化的内部类和匿名类是否应该有 SerialVersionUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477169/

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