에 따라 처리하는. 그러나 컴파일 할 때 :javac의는 최종 정적 다르게 할당 방법
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이라는 두 가지 "유형"이 있다는 것을 의미합니까, 아니면 그냥 컴파일러 최적화입니까?
컴파일러는 컴파일 타임에 '정적 최종'및 리터럴 상수로만 구성된 표현식을 평가할 수 있으며 필요에 따라 최적화를 수행 할 수 있습니다. 첫 번째 표현식은 컴파일 타임에 평가할 수 있습니다. 두 번째 것은 불가능합니다. 왜냐하면 비 최종 표현에 의존하기 때문입니다. – dasblinkenlight
이것은 JIT 바이트 코드 컴파일이 물론 남겨 둘 것을 의미하지는 않습니다. –