4

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

但是,我在这里读到

出于几个原因,强烈建议不要对内部类(即不是静态成员类的嵌套类)(包括本地和匿名类)进行序列化。...

所以我的问题是:

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

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

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

4

1 回答 1

4

给他们一个 serialVersionUID,因为:

  • 这是一个很好的一般做法,指定它当然没有什么坏处。
  • 警告应该被解决,而不是被压制。
  • 有时,当内部类变得足够大时,它们会被更改为顶级类。

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

于 2013-03-18T13:02:54.123 回答