この質問は、JAVA PROGRAMMING LANAGUAGEの本で尋ねられ、説明されています。しかし、説明がはっきりしていません。
誰かがそれをもっと明確に説明できますか?
本での説明は::
X のコンパイル時に Y のコードが記述されていない可能性があるため、この周期的な静的初期化は、コンパイル中に確実に検出することはできません。サイクルが発生した場合、X の静的初期化子は、Y のメソッドが呼び出された時点までしか実行されません。次に、Y が X メソッドを呼び出すと、そのメソッドは残りの静的初期化子がまだ実行されていない状態で実行されます。初期化子が実行されていない X の静的フィールドは、デフォルト値 (型に応じて false、「/u0000」、ゼロ、または null) のままです。