次のようなクラスがあるとします
public class Foo
{
public static final String FIELD_1 = Env.getProperties("one");
public static final String FIELD_2 = Env.getProperties("one");
//....
public static final String FIELD_N = Env.getProperties("n");
}
明らかに、FIELD_*
最初に を参照したときにすべてが読み込まれますFoo
。my が純粋に機能的ではないと仮定しEnv.getProperties(String)
ます (つまり、異なる値を返す可能性があります。どのように? ここでは重要ではありません)
Foo
すべてのクラス初期化コードが再実行されるように、クラスを強制的に「リロード」するにはどうすればよいですか(静的フィールドに異なる値を設定できるようにするためです)。
(さまざまな理由から、これらのフィールドを非静的または非最終的なものにすることはできません。そのため、さまざまな getter メソッドをオーバーライドして Foo をインターフェイスにするなどの解決策を提案しないでください)
ありがとう