1. ホーム
  2. java

[解決済み] Java修飾語(abstract, final, public, static, etc.)の妥当な順番は?

2022-06-28 02:20:06

質問内容

Java修飾子の合理的な順序は何ですか?

  • 抽象
  • 最終
  • ネイティブ
  • プライベート
  • プロテクト
  • パブリック
  • 静的
  • strictfp
  • シンクロナイズド
  • トランジェント
  • 揮発性

更新

の文言を変更しました。 推奨 から 妥当 を、推奨されるか否かの議論を沈静化させるためです。

どのように解決するのですか?

この 慣例的な 修飾子の使用順序は Java言語仕様 (そして Java 仮想マシン仕様ではありません) で言及されています。 クラス修飾子 には、次のような定義があります(抜粋)。

<ブロッククオート
ClassModifiers:
    ClassModifier
    ClassModifiers ClassModifier

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

[....]

2つ以上の(異なる)クラス修飾子がクラス宣言に現れる場合、必須ではありませんが、ClassModifierのための生産で上に示されたものと一致する順序で現れることが通例です。(段落の一番下にある小さなテキスト!)

この文は、修飾子の使用法が指定されている他のいくつかの場所で見つけることができます。 ここで のように、フィールド修飾子について

更新 : この回答が受け入れられるように、"指定/推奨" を "慣習" に置き換えたのです。コメントを読む場合は、このことを考慮してください ;-) 。(これを明確にしてくれた@EJPに感謝します) - とはいえ I をお勧めします。 を使用することをお勧めします。 慣習的な の順序になります。

Googleも推奨している を使用することを推奨します。

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

更新 : 新しい"があります。 Javaスタイルガイドライン OpenJDK コミュニティのプロジェクトのために用意されたものです。また、このガイドラインでは 修飾子の順序 を推奨しており、また、新しい デフォルト 修飾子も含まれています。

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