В следующем коде видно, что baa всегда ложно. Обнаружит ли это компилятор точки доступа и удалит ли вызов метода isBaa() и содержащийся в нем код?
public class Foo() {
public final boolean baa = false;
public isBaa() {
return baa;
}
}
Такое использование
static final Foo foo = new Foo();
public m() {
if (foo.isBaa()) {
// code here...
}
}
Я хотел бы знать, сравнивается ли этот код с добавлением
static final Foo foo = new Foo();
static final BAA = foo.isBaa();
и проверка с
if (BAA) ...
Интересует скорость выполнения после того, как точка доступа сделала свое дело. Можно ли как-то увидеть результат компиляции точки доступа? Или мы должны сделать вывод из деталей реализации используемого компилятора горячей точки.
Вариант использования заключается в поддержке isDebugEnabled() с помощью конечной переменной в коде, очень чувствительном к производительности. Поэтому меня интересует, оптимизирован ли сам вызов метода.