javac behandelt statische Schlüsse je nach Zuweisungsmethode unterschiedlich

Wenn ich kompiliere:

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

Ich bekomme eine leere MethodefooTest() {}. Wenn ich jedoch kompiliere:

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

Die if-Anweisung ist in der kompilierten Klassendatei enthalten. Bedeutet dies, dass es in Java zwei verschiedene "Typen" von statischen Finals gibt, oder handelt es sich nur um eine Compiler-Optimierung?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage