我正在准备SCJP,并观察到有趣的事情。
常量不遵循Sun命名约定:
File.separatorChar
File.separator
File.pathSeparatorChar
File.pathSeparator
如何解释?
也许,某些历史问题或只是错字?
答案 0 :(得分:4)
从技术上讲,这些都不是常数(参见constant expression的定义)。在编译时已知常量值。我认为带有下划线的大写命名约定仅适用于实际常量而不仅仅适用于任何static final
字段。至于为什么它们不是常量,它们当然是依赖于文件系统的,必须在运行时查找当前的文件系统。
(但是,在Java代码中,对所有static final
字段使用相同的命名约定是很常见的,无论它们是否是技术上的常量。)