2006/06/24
Foo.class does not initialize class Foo!
marsのメモ
Tiger からは Foo.class として(メタ情報としての)クラス・オブジェクトを参照しただけでは Foo の static 初期化子が実行されないという話題。クラスのロードが必要な static メソッドの実行や、Class.forName() を使ってクラスを明示的にロードした場合は、もちろん実行される。へ〜、知らなかったよ。
教訓: static 初期化子の中で副作用のある処理をしない。
Tiger からは Foo.class として(メタ情報としての)クラス・オブジェクトを参照しただけでは Foo の static 初期化子が実行されないという話題。クラスのロードが必要な static メソッドの実行や、Class.forName() を使ってクラスを明示的にロードした場合は、もちろん実行される。へ〜、知らなかったよ。
教訓: static 初期化子の中で副作用のある処理をしない。