在抽象类中指定一个“serialVersionUID”是否有意义?

时间:2018-05-06 09:25:19

标签: java

让我们假设我们有一个应该是可序列化的抽象类Foo

public abstract class Foo implements java.io.Serializable
{
      ...
}

为它添加唯一的串行版本标识long是否有意义?如果是这种情况,您应该为其添加protected修饰符,还是应该保留private

1 个答案:

答案 0 :(得分:3)

  

所有扩展Displayable课程的班级都需要自己的serialVersionUID长。添加受保护甚至公共修饰符不是更好吗?

没有。 serialVersionUID变量仅与类的实例序列化相关。如何完成这纯粹是类本身的实现细节。将变量暴露给其他类是打破抽象......虽然以一种难以“利用”的方式。

或者,为了解决问题,通过使变量更加可见,实现了什么??除了序列化机制和可以使用变量的类之外,你能想到什么吗? (当然,它不会以任何方式强制执行Displayable类的上述要求。)

值得的: