类属性声明,属性的顺序应该是final、private、static、type。

3

我正在寻找有关如何对类属性进行排序的最佳方法的文档,例如private/protected/public、final、static、type。

我将发布一个示例以便更好地理解我的意思。

class A {

  public final static int FOO = 3;

  final public static int FOO = 3;

}

好的,我假设属性类型(int、String、char)在属性名称之前。

我的真正疑问是当我尝试定位static、final和v时。

5个回答

7
语言规范只规定了修饰符必须在类型之前,因此int位于最后。修饰符包括类型参数、注释、访问修饰符(private、protected、public)、static、final、synchronized、strictfp、volatile、transient,它们可以以任何顺序出现(从“允许编译器”的角度来看)。
几天前我做了一次谷歌搜索,发现static final比final static更常见,所以这有助于对它们进行排序 :-)
我认为通常修饰符的顺序如下:
1. 注释 2. 类型参数 3. 访问修饰符 4. static 5. final 6. transient(仅适用于字段) 7. volatile(仅适用于变量) 8. synchronized(仅适用于方法)
我从未使用过strictfp或native,但我认为我会把它们放在synchronized周围。

我忘记了transient和volatile(直到我在项目中使用它们,然后才想起这个答案)。还有native关键字,用于方法。 - Paŭlo Ebermann

2

1

当我关心时,我会按照checkstyle的ModifierOrder检查[1]进行排序(引用自链接页面):

检查修饰符的顺序是否符合Java语言规范第8.1.1、8.3.1和8.4.3节中的建议。正确的顺序是:

  1. public
  2. protected
  3. private
  4. abstract
  5. static
  6. final
  7. transient
  8. volatile
  9. synchronized
  10. native
  11. strictfp

[1] http://checkstyle.sourceforge.net/config_modifier.html


0

回答了自己的问题:

私有/受保护的/公共的,静态的,最终的,类型


就我而言,我不同意;-) 我更喜欢 public static final - Joachim Sauer

0

字段(类、方法)修饰符的顺序无关紧要,它们只是标志,在我们查看方法签名时使用。

因此,如果您想使用固定顺序,那只是为了可读性。如果您在编译单元中始终使用相同的顺序,则代码看起来更好。

但是再次强调,顺序不会影响字节码。忘记微优化吧;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接