サードパーティのクラスでClass.forName()の束を呼び出す必要がありますが、影響を受けるすべてのクラスを静的初期化子で実行する必要があります。この静的初期化子の実行は、ロジックが他のすべての依存関係やその他のガベージ・プルを引き出すため、避けたいという望ましくない副作用です。クラス初期化子の実行を抑止する方法
これが実行されないようにする手段はありますか?私は、クラスのバイナリをハックすることによって得られる情報だけでなく、クラスのオブジェクトが必要です。
メソッドを呼び出す前に、クラスを適切に初期化する必要があることを知っています。私はこれらのクラスのコードで何もしていない、私はそれらを凍結したい。
クラスオブジェクトが必要ですか、クラスが存在する情報と同じですか? –
'Class'インスタンスで何をする必要がありますか?これが「非常にメタ」(メソッドシグネチャのリスト表示など)でない限り、そのクラスを初期化する必要があります。 Javaは「正しく」設定することなく、コードのいずれかを呼び出すことはできません。 – Thilo
クラスをロードする必要がある場合は、途中で自分のVMを作成したり、既存のVMを変更したりしない限り、静的初期化を抑制することはできません。 – Turing85