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, или это просто оптимизация компилятора?

Ответы на вопрос(4)

Ваш ответ на вопрос