javac traktuje statyczny finał inaczej w oparciu o metodę przypisania

Kiedy kompiluję:

public static final boolean FOO = false;
public static final void fooTest() {
    if (FOO) {
        System.out.println("gg");
    }
}

Mam pustą metodęfooTest() {}. Jednak podczas kompilacji:

static boolean isBar = false;
public static final boolean BAR = isBar;
public static final void fooTest() {
    if (BAR) {
        System.out.println("gg");
    }
}

instrukcja if znajduje się w skompilowanym pliku klasy. Czy to oznacza, że ​​istnieją dwa różne „typy” statycznego finału w java, czy jest to tylko optymalizacja kompilatora?

questionAnswers(4)

yourAnswerToTheQuestion