Java 修饰符的合理顺序是什么?
更新
我已经把 建议的措辞改为 合情合理,以便平静下来的讨论,无论顺序是否建议。
根据 Java 虚拟机规范,表4.4使用订单是合理的
在 Java 语言规范(而不是 Java 虚拟机规范)中提到了修饰符的 习惯了使用顺序,例如,对于 类修饰符,您可以找到以下定义(摘录) :
ClassModifiers: ClassModifier ClassModifiers ClassModifier ClassModifier: one of Annotation public protected private abstract static final strictfp [....] 如果一个类声明中出现两个或两个以上(不同的)类修饰符,那么通常(尽管不是必需的) ,它们按照与上面 ClassModfier 产品中所示顺序一致的顺序出现。(段落底部的小文本!)
ClassModifiers: ClassModifier ClassModifiers ClassModifier ClassModifier: one of Annotation public protected private abstract static final strictfp
[....]
如果一个类声明中出现两个或两个以上(不同的)类修饰符,那么通常(尽管不是必需的) ,它们按照与上面 ClassModfier 产品中所示顺序一致的顺序出现。(段落底部的小文本!)
你可以在其他几个指定修饰语用法的地方找到这个句子,比如字段修饰语的 给你。
更新 : 我将“指定/推荐”替换为“习惯”,以使这个答案可以接受。如果你读了评论,考虑到这一点; ——(感谢@EJP 使这一点明确)——然而,我将 推荐使用 习惯了订单。
Google 还建议使用 Java 规范中提到的惯例顺序 。
public / protected / private abstract static final transient volatile synchronized native strictfp
更新 : OpenJDK 社区中的项目有了一个新的“ Java 风格指南”计划。它还推荐使用 修饰词顺序修饰词顺序,并且还包括 Java8的新 违约修饰符。
public / private / protected abstract static final transient volatile **default** synchronized native strictfp
我使用两个规则来记住修饰符序列,但是不包括 strictfp,因为我从未使用过它。仅供参考。
同步的本地人是最不重要的人。
作为 FTV: 作为观看 FTV (法国电视台)。
:)
基于它们的 int 值。
修饰符(Java 平台 SE 8)