什么是Java修饰符(抽象,最终,公共,静态等)的合理顺序?

什么是Java修饰符的合理顺序?

  • 抽象
  • 最后
  • 本地人
  • 私人的
  • 保护
  • 上市
  • 静态的
  • strictfp
  • 同步
  • 短暂的
  • 挥发物

更新

我已经把build议的措辞改为合理 ,以便冷静地讨论是否build议订单。

Java语言规范 (而不是Java虚拟机规范)中提到了修饰符的习惯使用顺序,例如对于类修饰符,您将find以下定义(摘录):

ClassModifiers: ClassModifier ClassModifiers ClassModifier ClassModifier: one of Annotation public protected private abstract static final strictfp 

[….]

如果在类声明中出现两个或多个(不同的)类修饰符,则通常(但不是必需的),它们按照ClassModifier生产中所示的顺序出现。 (小段底部的小文本!)

你会在指定修饰符用法的其他几个地方find这个句子,例如这里用于字段修饰符。

更新 :我将“指定/推荐”replace为“习惯”,以使其成为可接受的答案。 考虑到这一点,如果你读的评论;-)(谢谢@EJP清楚) – 不过, build议使用习惯的顺序。

Google还build议使用Java规范中提到的习惯顺序。

 public / protected / private abstract static final transient volatile synchronized native strictfp 

更新 :OpenJDK社区的项目有一个新的“ Java风格指南 ”。 它还有修改器顺序的build议,还包括Java 8的新默认修改器。

 public / private / protected abstract static final transient volatile **default** synchronized native strictfp 

使用按照Java虚拟机规范表4.4的顺序是合理的

  • 上市
  • 保护
  • 私人的
  • 抽象
  • 静态的
  • 最后
  • 短暂的
  • 挥发物
  • 同步
  • 本地人
  • strictfp

基于它们的int值。

修改器(Java平台SE 8)

  • 1:公共
  • 2:私人
  • 4:保护
  • 8:静态
  • 16:最后
  • 32:同步
  • 64:易失性
  • 128:瞬态
  • 256:原生
  • 512:接口
  • 1024:抽象
  • 2048:strictfp

我使用两条规则来记住修饰符序列,但不包括strictfp,因为它从来没有被我使用过。 仅供参考。

  1. 同步本地是最不重要的人。

  2. PPP AS FTV:PPP {噪音} AS {看} FTV {法国电视}。

🙂