在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 编译很可能不是在实例级别完成的,所以我认为这行不通,但也许有一种静态方式?