首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >静态最终变量的Java命名约定

静态最终变量的Java命名约定
EN

Stack Overflow用户
提问于 2011-08-31 23:45:58
回答 7查看 172.6K关注 0票数 105

有一条规则说:

表示常量(最终变量)的

名称必须全部大写,并使用下划线分隔单词(取自http://geosoft.no/development/javastyle.html)

这对于像int或string这样的原语类型很有效:

private static final int MAX_COUNT = 10;

但是非原语类型又是什么呢?在大多数情况下,我看到了以下情况:

private static final Logger log = Logger.getLogger(MyClass.class);

或者在单例中,其中实例变量不是大写的。

问题是,声明这些类型的变量(如日志和实例)的正确方式是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-08-31 23:49:38

这仍然是一个常量。有关常量命名约定的详细信息,请参阅JLS。但在现实中,这完全是偏好的问题。

接口类型中的常量名称应该是,类类型的final变量通常可以是一个或多个单词、首字母缩写或缩写的序列,全部大写,组件由下划线"_"字符分隔。常量名称应该是描述性的,而不是不必要的缩写。按照惯例,它们可以是任何适当的词性。常量的名称示例包括MIN_VALUEMAX_VALUEMIN_RADIXCharacter类的MAX_RADIX

一组代表一个集合的可选值的常量,或者,在较少的情况下,表示整数值中的掩码位的一组常量,有时可以用常用的缩写词作为名称前缀来指定,例如:

接口ProcessStates { int PS_RUNNING = 0;int PS_SUSPENDED = 1;}

涉及常量名称的模糊处理很少见:

由于它们是可分辨的syntactically.,因此

  • 常量名称通常没有小写字母,因此它们通常不会遮蔽包或类型的名称,也不会遮蔽名称通常至少包含一个小写are名称的字段
票数 76
EN

Stack Overflow用户

发布于 2011-08-31 23:51:12

语言并不关心。重要的是遵循你正在工作的项目的既定风格和惯例,这样其他维护者(或五个月后的你)就有最好的机会不会被弄糊涂了。

我认为可变对象的全大写名称肯定会让我感到困惑,即使对该对象的引用恰好存储在static final变量中。

票数 13
EN

Stack Overflow用户

发布于 2014-11-29 12:59:00

对对象的常量引用不是常量,它只是对对象的常量引用。

private static final不是定义一个常量或不是常量的东西。这只是Java定义常量的方式,但这并不意味着每个private static final声明都是用来定义常量的。

当我编写private static final Logger时,我并不是想定义一个常量,我只是想定义一个对一个对象的引用,这个对象是private (它不能从其他类访问)、static (它是一个类级变量,不需要实例)和final (它只能赋值一次)。如果它恰好与Java期望您声明一个常量的方式一致,那么,不幸的是,它不会使它成为常量。我不关心编译器、声纳或任何Java专家说什么。常量值是一回事,像MILLISECONDS_IN_A_SECOND = 1000这样的常量值是一回事,而对对象的常量引用是另一回事。

众所周知,黄金是会发光的,但并不是所有发光的都是黄金。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7259687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档