Java:应该是可序列化的内部和外部匿名类有Seri​​alVersionUID吗?

时间:2013-03-18 12:44:41

标签: java serialization inner-classes anonymous-class serialversionuid

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

但是,我已经阅读了here

  

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

所以我的问题是:

我应该为内部和匿名课程分别提供SerialVersionUID,还是应该为这些课程添加@SuppressWarnings("serial")

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

在任何情况下,我都会引用这些类的瞬态,因为我不希望它们被序列化。

1 个答案:

答案 0 :(得分:4)

给他们一个serialVersionUID,因为:

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

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