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

JVM运行时如何保持向后兼容性?,jvm,backwards-compatibility,Jvm,Backwards Compatibility,我有一个简单的Java类,它使用enum reserved关键字作为变量名。我能够在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类,它使用enum reserved关键字作为变量名。我能够在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字节码。因此,字符串的名称在编译后实际上并不重要。

因为在编译源代码时,它会转换为Java字节码。因此,字符串的名称在编译后实际上并不重要。

谢谢。所以Java 1.6编译器限制enum,但Java runtime不关心或不知道在Java 1.4向后兼容模式下执行此类?类字节码甚至没有局部变量的名称。他们只得到内存插槽号。谢谢。所以Java 1.6编译器限制enum,但Java runtime不关心或不知道在Java 1.4向后兼容模式下执行此类?类字节码甚至没有局部变量的名称。他们只得到内存插槽号。