简体   繁体   English

serialVersionUID命名约定

[英]serialVersionUID naming convention

Is there any viable reason why serialVersionUID field is not named SERIAL_VERSION_UID? 有没有可行的原因,为什么serialVersionUID字段没有命名为SERIAL_VERSION_UID?

According to the docs for java.io.Serializable : 根据java.io.Serializable的文档:

A serializable class can declare its own serialVersionUID explicitly by declaring a field named "serialVersionUID" that must be static, final , and of type long: 可序列化类可以通过声明名为“serialVersionUID”的字段来显式声明其自己的serialVersionUID,该字段必须是static,final和long类型:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; ANY-ACCESS-MODIFIER静态最终长serialVersionUID = 42L;

While referring Java Naming Conventions all static final (constants) fields should be capitilized having its fragments separated with an underscore. 在引用Java命名约定时,所有静态最终 (常量)字段都应该被限制,其片段用下划线分隔。

Probably because serialVersionUID was defined in the Java serialization API before such conventions existed. 可能是因为在存在此类约定之前,在Java序列化API中定义了serialVersionUID。

I found a document published by Sun in 1997 called Java Code Conventions that says in Section 9 on page 16 "The names of variables declared class constants and of ANSI constants should be alluppercase with words separated by underscores (“ ”)."_ 我发现Sun于1997年发布了一个名为Java Code Conventions的文档,该文档在第16页的第9节中说明“声明类常量和ANSI常量的变量的名称应该是alluppercase,其中的单词用下划线(” “) 分隔 。”_

So my guess is that Sun just didn't enforce their own standards on their own code. 所以我的猜测是Sun并没有对自己的代码强制执行自己的标准。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM