Java修饰符(抽象、最终、公共、静态等)的合理顺序是什么?
Java修饰符(抽象、最终、公共、静态等)的合理顺序是什么?,java,Java,Java修饰符的合理顺序是什么
摘要
决赛
土生土长的
私人的
保护
公开的
静止的
strictfp
同步的
短暂的
易变的
更新
我已将措辞从“建议”改为“合理”,以便平息关于是否建议该订单的讨论。根据建议使用该订单是合理的
公开的
保护
私人的
摘要
违约
静止的
决赛
短暂的
易变的
同步的
土生土长的
strictfp
中提到了修饰符的惯用用法顺序(而不是Java虚拟机规范),例如,您可以找到以下定义(摘录):
[……]
如果一个类声明中出现两个或多个(不同的)类修饰符,则通常(
Java修饰符的合理顺序是什么
- 摘要
- 决赛
- 土生土长的
- 私人的
- 保护
- 公开的
- 静止的
- strictfp
- 同步的
- 短暂的
- 易变的
更新
我已将措辞从“建议”改为“合理”,以便平息关于是否建议该订单的讨论。根据建议使用该订单是合理的
- 公开的
- 保护
- 私人的
- 摘要
- 违约
- 静止的
- 决赛
- 短暂的
- 易变的
- 同步的
- 土生土长的
- strictfp
中提到了修饰符的惯用用法顺序(而不是Java虚拟机规范),例如,您可以找到以下定义(摘录):
[……]
如果一个类声明中出现两个或多个(不同的)类修饰符,则通常(尽管不是必需的)它们的出现顺序与上面在ClassModifier产品中显示的顺序一致。(段落底部的小文本!)
您可以在其他几个指定修饰符用法的地方找到这句话,例如字段修饰符
更新:我将“指定/建议”替换为“习惯”,使其成为可接受的答案。如果您阅读评论,请考虑这一点;-)(感谢@EJP澄清这一点)-尽管如此,I仍建议使用习惯顺序
更新:OpenJDK社区中的项目有一个新的“计划”。它还建议使用一个新的修饰符,还包括Java8的新修饰符
public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp
我使用两个规则来记住修饰符序列,但不包括strictfp,因为我从未使用过它。仅供参考
同步本地人是优先级最低的人
PPP作为FTV:PPP{噪音}作为{观看}FTV{法国电视台}
:)基于它们的int值
- 1:公众
- 2:私人
- 4:受保护
- 8:静态
- 16:决赛
- 32:已同步
- 64:易挥发
- 128:瞬态
- 256:本地
- 512:接口
- 1024:摘要
- 2048年:2009年
+1您经常会看到:“公共抽象”、“私有静态最终”等。一些IDE(例如NetBeans)甚至有一些快捷方式,例如“psf”或“psf”,您可以在中找到建议的顺序(而不是Java虚拟机规范!)。看看我的答案。@frva你可能找不到这样的东西。不要将语言语法与风格推荐混淆。@Puce:一些IDE(例如IntelliJ IDEA)甚至可以正确地对修饰词进行排序。这一点都不重要,你也不应该浪费太多时间去纠结于此。就我个人而言,我总是把访问修饰符放在第一位,但在那之后,我甚至不能告诉你我下一步要做什么。如果你想要一份推荐信,那就试试吧,但我不确定这里面有没有具体说明。我想知道为什么这应该是一个“非建设性”的问题(关闭请求)。您可以在规范中找到建议(参见我的答案),遵循此建议将提高代码的可读性。静态代码分析器(比如声纳)会抱怨如果你使用不同的命令。这件事甚至没有提到,在一个你应该看的地方,也在一个你希望它出现的地方。@EJB代码约定是从1999年开始的,非常需要更新。如果他们再次接触这些惯例,我希望他们能包括这个话题,因为这确实是一个好地方!Eclipse可以自动对修改器进行排序吗?或者如果它们未排序,至少给出一个警告?问题是“Java修饰符的建议顺序是什么?”这个问题在语言规范中得到了回答(由于顺序不是必需的,所以我认为它是规范中建议的)。JVM规范是关于类文件格式的,而不是关于Java源代码的。-事实上,顺序并不重要,但是如果您遵循一条建议,您的代码将更容易被其他人阅读。因此,我认为这是一个合理的问题,可以给出准确的答案。顺便说一句-静态代码分析器(例如SONAR)会抱怨错误的顺序。如果一个类声明中出现两个或多个(不同的)类修饰符,那么尽管不是必需的,但习惯上它们的出现顺序与上面在ClassModifier产品中显示的顺序一致。是规范的一部分!在这种情况下,我想大声喊叫,但我已经冷静下来了——对此感到非常抱歉;-)-我也不是土生土长的人,所以你在语言口译方面可能是对的。我只想说的是,Java源代码中修饰符的顺序是在一个非常正式的地方处理的——当我问自己同样的问题时,我很幸运地发现了这一点。我想没有比Java语言规范更好的地方可以找到答案了。让我们@EJP您对这个主题有强烈的意见(~没有推荐的顺序)。您能提供这个答案吗?我对投票很好奇。这个答案不包括关键字“default”,它们的int值和它有什么关系?
public / protected / private
abstract
static
final
transient
volatile
synchronized
native
strictfp
public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp