序列化版本号命名规范

8

为什么serialVersionUID字段没有被命名为SERIAL_VERSION_UID,有没有任何可行的理由?

根据java.io.Serializable文档:

可序列化类可以通过声明一个名为“serialVersionUID”的字段来显式地声明自己的 serialVersionUID,该字段必须是static、final和类型为long:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;

在参考Java命名约定时,所有的static final(常量)字段都应该使用下划线分隔其片段并大写。


3
那就是序列化 API 的写法啦 ;) - fge
1个回答

6

可能是因为 serialVersionUID 在 Java 序列化 API 中被定义在这些惯例出现之前。

我找到了一份 Sun 公布于1997年的文件,名为 Java 代码规范 ,第16页的第9节中说道:变量名声明为类常量和 ANSI 常量应全部大写,并使用下划线分隔单词(“_”)。

所以我猜想 Sun 只是没有强制执行自己的标准来编写他们自己的代码。


不要这样想,serialVersionUID 是在Java 1.5中引入的。 - Wojciech Owczarczyk
@WojtekOwczarczyk。它是在Java 1.1中与序列化一起引入的。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接