コンパイルすると:
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 に 2 つの異なる「タイプ」があることを意味しますか、それともコンパイラの最適化だけですか?