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?