Java の static ブロックと Instance Initializer ブロックの実行順序
Java クラスを操作する場合、static ブロックとインスタンス初期化ブロックの実行順序を理解することが重要です。インスタンス初期化ブロックが実行されます。これらのブロックは、初期値の割り当て、クラスおよびオブジェクト メンバーの初期化などの重要な操作を実行します。
インスタンス初期化ブロック
中括弧 { } で囲まれたインスタンス初期化ブロックが実行されます。クラスのインスタンスが作成されるたびに。これらは、クラス内のコードに出現する順序で実行されます。この動作はすべてのクラスで一貫しています。
静的イニシャライザ ブロック
静的イニシャライザ ブロックも中括弧 { } で囲まれ、前に static キーワードが付いているものは、次の場合に実行されます。クラスがロードされます。これらは特定のインスタンスに関連付けられておらず、作成されたインスタンスの数に関係なく、一度だけ実行されます。
特定の実行順序
Java 言語仕様 (JLS)静的初期化子ブロックの実行の特定の順序を定義します:
例
次のコードを考えてみましょう例:
class Grandparent { static { System.out.println("Static - Grandparent"); } } class Parent extends Grandparent { static { System.out.println("Static - Parent"); } } class Child extends Parent { static { System.out.println("Static - Child"); } }
main メソッドが実行されると、次の出力が生成されます。
Static - Grandparent Static - Parent Static - Child
これは、静的初期化ブロックが親 -> の順序で実行されることを示しています。 subclass.
例外
このルールには注目すべき例外が 1 つあります。親クラスが決して参照されないクラスを定義している場合、その静的初期化ブロックは実行されません。これは、クラスローダーが明示的に必要なクラスのみを初期化するためです。
以上がJava の静的ブロックとインスタンス初期化ブロックの実行順序は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。