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

Mic*_*ann 102 java

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

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

更新

我已将措辞从建议改为合理,以便冷静讨论订单是否被推荐.

FrV*_*aBe 116

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

ClassModifiers:
    ClassModifier
    ClassModifiers ClassModifier

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

[....]

如果在类声明中出现两个或更多(不同的)类修饰符,则通常(尽管不是必需的)它们按照与上面在ClassModifier的制作中所示的顺序一致的顺序出现.(段落底部的小文字!)

您将在指定修饰符用法的其他几个地方找到此句子,例如此处用于字段修饰符.

更新:我将"指定/推荐"替换为"惯用",以使其成为可接受的答案.如果你读的意见考虑到这一点;-)(感谢@EJP表明这一点) -不过建议使用习惯的顺序.

Google还建议使用Java规范中提到的常规订单.

public / protected / private 
abstract 
static 
final 
transient 
volatile 
synchronized 
native 
strictfp
Run Code Online (Sandbox Code Playgroud)

更新:OpenJDK社区的项目有一个新的" Java风格指南 "计划.它还建议使用修饰符顺序,还包括Java 8的新默认修饰符.

public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp
Run Code Online (Sandbox Code Playgroud)

  • 句子_如果两个或更多(不同的)类修饰符出现在类声明中,那么它们是习惯性的,尽管不是必需的,它们的出现顺序与上面在ClassModifier的制作中所示的顺序一致._是规格的一部分! (3认同)

Mic*_*ann 28

根据Java虚拟机规范表4.4使用订单是合理的

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

  • 经常看到的+1:"public abstract","private static final"等.某些IDE(例如NetBeans)甚至有一些快捷方式,例如"psf"或"Psf" (8认同)

Ser*_*ero 7

基于它们的 int 值。

修饰符(Java 平台 SE 8)

  • 1:公开
  • 2:私人
  • 4 : 受保护
  • 8 : 静电
  • 16 : 最后
  • 32 : 同步
  • 64:挥发性
  • 128:瞬态
  • 256:本机
  • 512:接口
  • 1024:摘要
  • 2048:strictfp

  • 它们的 int 值有什么关系呢? (2认同)