В Java мы можем сделать условную компиляцию следующим образом:
private static final boolean DO_CHECK = false;
...
if (DO_CHECK) {
// code here
}
Компилятор увидит, что DO_CHECK всегда ложно, и удалит весь оператор if. Однако иногда, особенно в библиотечном коде, мы не можем использовать условную компиляцию, но мне интересно, можем ли мы использовать условную JIT-компиляцию?
private final boolean doCheck;
public LibraryClass(boolean d) {
doCheck = d;
}
public void oftenCalledMethod() {
if (doCheck) {
...
}
}
Если мы создадим LibraryClass с doCheck = false, JIT-компилятор (в Hotspot) также удалит оператор if?
Обновление: я только что понял, что JIT-компиляция, скорее всего, не выполняется на уровне экземпляра, поэтому я думаю, что это не сработает, но, возможно, есть статический способ?