有没有可行的理由说明为什么serialVersionUID字段没有命名为SERIAL_VERSION_UID?
根据java.io.Serializable的文档:
可序列化类可以显式声明自己的serialVersionUID 通过声明一个名为" serialVersionUID"的字段必须静态, 最终,类型为long:
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
在引用Java Naming Conventions时,所有静态最终(常量)字段应该被限制,其片段用下划线分隔。
答案 0 :(得分:4)
可能是因为在存在此类约定之前,在Java序列化API中定义了serialVersionUID。
我发现Sun于1997年发布了一个名为Java Code Conventions的文档,该文档在第16页的第9节中说明了“变量的名称声明了类常量和ANSI 常量应该是alluppercase,单词用下划线分隔(“”)。“_
所以我的猜测是,Sun并没有对自己的代码强制执行自己的标准。