2013-01-09 1 views
0

변수 이름으로 enum reserved 키워드를 사용하는 간단한 Java 클래스가 있습니다. 나는 자바 1.6에서 자바 1.4이 코드를 컴파일하고 실행할 수 있어요 : 열거는 예약 키워드이기 때문에 JVM 런타임은 어떻게 이전 버전과의 호환성을 유지합니까?

public class Main { 

    public static void main(String[] args) { 
     String enum = "ENUM String"; 
     System.out.println(enum); 
    } 

} 

그러나 자바 1.6 컴파일러는이 코드를 컴파일되지 않습니다. Java 1.6 런타임이이 코드를 실행하는 이유는 무엇입니까?

답변

3

소스 코드를 컴파일 할 때 Java 바이트 코드로 변환되기 때문에. 문자열이 컴파일되면 문자열 이름이 중요하지 않습니다.

+0

감사합니다. Java 1.6 컴파일러는 열거 형을 제한하지만 Java 런타임은 신경 쓰지 않거나 Java 1.4 이전 버전 호환성 모드에서이 클래스를 실행한다는 것을 알고 있습니까? –

+0

클래스 바이트 코드에는 로컬 변수의 이름조차 없습니다. 그들은 단지 메모리 슬롯 번호를 얻습니다. – Nayuki

관련 문제