Java中的修饰符关键字顺序

use*_*115 49 java syntax coding-style access-modifiers

每当我用Java编写带有更多关键字的方法时public void,每次我用另一种方式编写它.有时" static public void"有时" public static void"等.

这些关键字的最佳订单(最佳做法)是什么?

[ abstract/static] [ final] [ synchronized] [ public/private/protected] [ result_type] ???

Nan*_*ale 61

从理论上讲,如果你说公共静态最终或最终静态公共无关紧要,但如果按照惯例,其他人就能更容易地阅读你的代码.这是首选顺序:

[公共| 受保护 私人的 ]

静态的

抽象

同步

[瞬态| 不稳定的

最后

本地人

strictfp

[int | 长| 字符串| 班级| 枚举| 界面等]

  • 我认为静态和抽象的顺序是根据http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.3交换的.要编辑它.. (4认同)
  • @Joey,`class Outer {static abstract class Inner {}}` (3认同)

Dre*_*ens 42

Checkstyle的(它实现了Java语言规范部分的建议,8.1.1,8.3.18.4.3)说:

  1. 上市
  2. 保护
  3. 私人的
  4. 抽象
  5. 默认
  6. 静态的
  7. 最后
  8. 短暂的
  9. 挥发物
  10. 同步
  11. 本地人
  12. strictfp

  • 1.-3. 永远不可能同时出现,因此它们应该并列第一。 (2认同)
  • @KonradHöffner,不,这样就清楚多了。尽管有技术性,我还是希望有一个列表,我可以在其中直观地沿着单一维度进行选择。事实上,你不能拥有“公共保护”的东西,这一点是没有意义的。这是关于整体排序,而不是关于允许在一起的内容。合理配对适用于语言的 BNF(等),而不是这个问题。 (2认同)

FrV*_*aBe 7

Java 语言规范中提到了修饰符的自定义使用顺序 (因此无需有自己的意见;-))例如对于方法修饰符,您将找到以下定义(摘录):

MethodModifiers:
    MethodModifier
    MethodModifiers MethodModifier

MethodModifier: one of
    Annotation public protected private abstract
    static final synchronized native strictfp
Run Code Online (Sandbox Code Playgroud)

如果两个或多个(不同的)方法修饰符出现在一个方法声明中,虽然不是必需的,但通常它们的出现顺序与上面 MethodModifier 产生式中所示的顺序一致。

您会在其他几个指定使用修饰符的地方找到这句话,例如这里用于字段修饰符。

(这主要是从我这里的另一个答案中复制的)。


Mat*_*all 2

最好的顺序是其余代码使用的顺序。

  • 是的,但你不能否认“public static final”比“public final static”更常见。有一些不成文的约定。 (5认同)