条件に対して可能なオン/オフフラグを最速で提供する方法を探しています(つまり、ゼロタイム- コンパイル/クラスロード/JIT 時間の解決) 。もちろん、この条件は、アプリケーションの実行ごとに 1 回だけ変更されます (起動時)。if
「条件の場合のコンパイル時定数」は条件付きでコンパイルでき、条件全体をコードから削除できることを知っています。しかし、ソースを再コンパイルする必要のない最速の (そしておそらく単純な) 代替手段は何ですか?
.jar
条件を単一のクラスと条件付きのメソッドで分離するように移動して、その 2 つのバージョンを生成.jar
し、アプリケーションの起動時にクラスパスでそれらのバージョンを切り替えることはできますか? そのメソッドが空であることを発見した場合、JITは別のメソッドへの呼び出しを削除しますか?.jar
「ClassWithMyCondition」を実装するクラスパスに 2 つのクラスを提供することでそれを行うことができますか?これらのクラスの 1 つには実際の実装があり、2 つ目は空のメソッドのみを持ち、その 1 つをインスタンス化します。JIT はClass.forName
プライマリ.newInstance()
から空のメソッドへの呼び出しを削除しますか?非常にループネストされた方法?
この問題に対する最も簡単なバイトコード操作ソリューションは何ですか?