【问题标题】:Java naming convenction and serialVersionUID(constant written in lowercase)Java命名约定和serialVersionUID(小写常量)
【发布时间】:2015-12-29 08:48:58
【问题描述】:

每个可序列化的类都必须声明一个静态的最终 serialVersionUID 字段。 由于 java 命名约定,常量的每个名称都应以大写形式书写。 但是,如果我将此变量命名为例如“SERIAL_VERSION_UID”,它将不起作用。 这种情况是惯例规则的例外吗?或者我可以以某种方式强制我的程序接受大写名称?

我发现了这个问题:serialVersionUID naming convention 但它没有给我答案。 那么命名 serialVersionUID 是否不违反命名约定规则,如果是,是否有任何地方记录证明它?

【问题讨论】:

  • this answer 的哪一部分没有回答这个问题?
  • "声明类常量和 ANSI 常量的变量名应全部大写,并用下划线 ("") 分隔。"_serialVersionUID 不符合规则,因此命名错误,我应该修理它。我就是这样理解这个问题的答案的。这就是我问这个问题的原因:(
  • TheLimeTrees,它不是重复的。我在我的问题中写了它,我不确定这里给出的答案 -> stackoverflow.com/questions/8836369/…
  • 引用“所以我的猜测是 Sun 只是没有在自己的代码上执行自己的标准。”

标签: java naming-conventions serializable


【解决方案1】:

如果您看到 Java 文档

强烈建议显式 serialVersionUID 声明尽可能使用 private 修饰符,因为此类声明仅适用于立即声明的类——serialVersionUID 字段作为继承成员没有用

因此,serialVersionUID 不是一个常量,它不会在应用程序的其他任何地方使用。它只是一个序列化类的私有成员变量

希望对你有帮助

【讨论】:

  • 这没有提到任何关于 OP 要求的命名约定。只是建议使用私有修饰符。
  • 是否有任何地方写到 serialVersionUID 是一个常量?
  • 是的。在 java 文档中。 -> docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html '名为“serialVersionUID”的字段必须是静态的、最终的和长类型的:''
  • 哪里说它是一个常数?
  • Here -> 'that must be static, final, and of type long'
猜你喜欢
  • 2012-02-08
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多