Javaでは、次のように条件付きコンパイルを行うことができます
private static final boolean DO_CHECK = false;
...
if (DO_CHECK) {
// code here
}
コンパイラは、DO_CHECK が常に false であることを確認し、if ステートメント全体を削除します。ただし、特にライブラリコードでは、条件付きコンパイルを使用できない場合がありますが、条件付き JIT コンパイルを使用できるのでしょうか?
private final boolean doCheck;
public LibraryClass(boolean d) {
doCheck = d;
}
public void oftenCalledMethod() {
if (doCheck) {
...
}
}
doCheck = false で LibraryClass を構築した場合、JIT コンパイラ (Hotspot 内) は if ステートメントも削除しますか?
更新: JIT コンパイルはおそらくインスタンス レベルでは行われないことに気付いたので、これは機能しないと思いますが、静的な方法があるのではないでしょうか?