JVM运行时如何保持向后兼容性



我有一个简单的Java类,它使用enum保留关键字作为变量名。我能够在Java 1.4中编译这段代码,并在Java 1.6中执行它:

public class Main {
    public static void main(String[] args) {
        String enum = "ENUM String";
        System.out.println(enum);
    }
}
但是Java 1.6编译器不会编译这段代码,因为enum是一个保留关键字。为什么Java 1.6运行时仍然执行这些代码?

因为当您编译源代码时,它被转换为Java字节码。所以字符串的名称在编译后就不重要了