2012-01-12 219 views
6

是否有任何可行的原因,为什么serialVersionUID字段未命名为SERIAL_VERSION_UID?serialVersionUID命名约定

根据该文档为java.io.Serializable

序列化类可以通过声明名为“serialVersionUID的” 最终一个领域,必须静态的,明确宣布了自己的serialVersionUID ,和long类型:

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

虽然参照Java Naming Conventions所有静态最终(常量)字段应该capitilized具有以下划线分离其片段。

+1

这就是编写序列化API的方式;) – fge 2012-01-12 14:08:21

回答

4

很可能是因为serialVersionUID是在Java序列化API中定义之前存在此类约定。

我发现太阳在1997年发表了一份名为Java Code Conventions,在第9节说,第16页‘“的声明的类常量和ANSI的 常量应该用下划线(分隔的词来alluppercase变量名’ )。“_

所以我的猜测是,Sun并没有在自己的代码上强制执行自己的标准。

+0

不要这么认为,serialVersionUID是在Java 1.5中引入的 – 2012-01-12 14:16:20

+1

我纠正了,并编辑了我的评论。 – Dev 2012-01-12 14:27:06