javac рассматривает static final по-разному в зависимости от метода назначения
Когда я компилирую:
public static final boolean FOO = false;
public static final void fooTest() {
if (FOO) {
System.out.println("gg");
}
}
Я получаю пустой методfooTest() {}
, Однако, когда я компилирую:
static boolean isBar = false;
public static final boolean BAR = isBar;
public static final void fooTest() {
if (BAR) {
System.out.println("gg");
}
}
оператор if включен в скомпилированный файл класса. Означает ли это, что в Java есть два разных «типа» static final, или это просто оптимизация компилятора?