132

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

  • 抽象的
  • 最终的
  • 本国的
  • 私人的
  • 受保护
  • 上市
  • 静止的
  • 严格的fp
  • 同步的
  • 短暂的
  • 易挥发的

更新

我已将措辞从推荐改为合理,以平息是否推荐该命令的讨论。

4

4 回答 4

142

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

ClassModifiers:
    ClassModifier
    ClassModifiers ClassModifier

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

[……]

如果两个或多个(不同的)类修饰符出现在一个类声明中,那么尽管不是必需的,但习惯上它们的出现顺序与上面 ClassModifier 产生式中所示的顺序一致。(段落底部的小文字!)

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

更新:我将“指定/推荐”替换为“习惯”,以使其成为可接受的答案。如果您阅读评论,请考虑到这一点;-)(感谢@EJP 澄清这一点)- 尽管如此,我还是建议您使用习惯顺序。

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

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

更新:OpenJDK 社区中的项目有一个新的“ Java 风格指南”倡议。它还推荐了修饰符顺序,还包括 Java 8 的新默认修饰符。

public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp
于 2013-05-24T09:45:53.767 回答
31

根据Java 虚拟机规范,表 4.4使用顺序是合理的

  • 上市
  • 受保护
  • 私人的
  • 抽象的
  • 默认
  • 静止的
  • 最终的
  • 短暂的
  • 易挥发的
  • 同步的
  • 本国的
  • 严格的fp
于 2013-05-24T09:03:16.370 回答
7

基于它们的 int 值。

修饰符(Java 平台 SE 8)

  • 1:公开
  • 2:私人
  • 4:受保护
  • 8:静态
  • 16:决赛
  • 32:同步
  • 64:挥发性
  • 128:瞬态
  • 256:本机
  • 512:接口
  • 1024:摘要
  • 2048:严格
于 2015-10-06T09:35:28.633 回答
0

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

  1. 同步本地人是最不优先的人。

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

:)

于 2015-01-23T10:15:00.267 回答