This question关于为什么Java中的常量按惯例大写,我试着想一下反例。
我至少可以想到一个(Double.NaN
)。还有其他人吗?
答案 0 :(得分:7)
当然,public final static PrintStream out
(在java.lang.System.out
中)。但这是一个非常好的例外,因为System.OUT.println
只是丑陋。
此外,大多数时间记录器的初始化如下:
private static final Logger logger = Logger.getLogger(MyClass.class);
然而,在这两种情况下,这些都不是真正意义上的常量。所以也许我们可以做出区分:
static
因为需要静态访问的字段而final
因为它们不应在运行时重新分配,所以不一定是常量。
答案 1 :(得分:4)
有很多serialVersionUID
!
ResultSetMetaData
中的其他人,例如columnNoNulls
,columnNullable
...
DatabaseMetaData
和ICC_Profile
有很多混合大小写常量。
这是一个包含大多数JavaSE常量的列表:Constant Field Values
答案 2 :(得分:2)
来自java.awt.Color类的颜色常量,如黑色,红色,绿色等。
应该注意的是java.awt.Color还提供了这些常量的大写替代方案(例如BLACK,RED,GREEN等)。
答案 3 :(得分:2)
java.util.logging.Logger.global是一个全小写的常量
答案 4 :(得分:0)
null
,true
和false
。它们可以说是关键字,但是当你得到它时,它们是常量,分别评估为0x00,0x01和0x00。
答案 5 :(得分:0)
数组实例的length
。
顺便说一句,我看到在一个方面提到的对象是“常量”的例子,即它们的引用没有改变 - 引用是最终的静态,但是当这些对象是活动的时候;即,当调用这些对象上的方法时,它们的内部属性会发生变化。在这些情况下,我不会使用UPPERCASE命名约定,因为在我的视图中对象不是常量。