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

Vin*_*tia 1 jvm backwards-compatibility

我有一个简单的 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);
    }

}
Run Code Online (Sandbox Code Playgroud)

然而,Java 1.6 编译器不会编译此代码,因为 enum 是保留关键字。为什么Java 1.6运行时仍然执行这段代码?

小智 5

因为当您编译源代码时,它会被转换为 Java 字节码。因此,字符串的名称一旦被编译就不再重要了。