【问题标题】:Naming for static final fields of java.io.File are not standardjava.io.File 的静态最终字段的命名不标准
【发布时间】:2011-04-22 20:52:43
【问题描述】:

我正在准备 SCJP 并观察到有趣的事情。

常量不遵循 Sun 命名约定:

File.separatorChar
File.separator
File.pathSeparatorChar
File.pathSeparator

如何解释?

也许是一些历史问题或只是错字?

【问题讨论】:

  • 嗯,有趣!我假设历史问题和后来的向后兼容性。

标签: java oracle static naming-conventions sun


【解决方案1】:

从技术上讲,这些都不是常量(参见constant expression 的定义)。常量的值在编译时是已知的。我相信带有下划线的大写命名约定仅适用于实际常量,而不仅仅是任何static final 字段。至于为什么它们不是常量,它们当然是依赖于文件系统的,并且必须在运行时查找当前文件系统。

(不过,在 Java 代码中,对所有 static final 字段使用相同的命名约定是很常见的,无论它们在技术上是否为常量。)

【讨论】:

  • 它们不是常量的一个重要线索是JavaDocs 中缺少它们的final 关键字。
  • 确实是这个原因。编译时常量可以内联。这些值当然不能,因为它们依赖于运行时环境。
  • 是的,看起来你是对的。实际上,这里是官方常量列表:download.oracle.com/javase/1.4.2/docs/api/constant-values.html 并且那里有一些非标准的命名常量,例如在摇摆库中
  • @R. Bemrose:它们实际上是static final,不过……看起来在Javadoc 中连常量都没有final。以前没有注意到。
  • 哦,嗯,你是对的。我的印象是它们在 JavaDoc 中被标记为 final。哎呀。
猜你喜欢
  • 2019-11-13
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
相关资源
最近更新 更多