2013-01-09 25 views
0

我有一个简单的Java类,它使用enum reserved关键字作为变量名。我能够在Java 1.4中使用Java 1.6编译这段代码并执行它:JVM运行时如何保持向后兼容性?

public class Main { 

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

} 

但是因为枚举是保留关键字在Java 1.6编译器不会编译此代码。为什么Java 1.6运行时仍然执行此代码?

回答

3

因为当你编译你的源代码时,它被转换成Java字节码。所以一旦它被编译,你的字符串的名字就无关紧要了。

+0

谢谢。所以Java 1.6编译器会限制枚举,但是Java运行时并不关心或知道在Java 1.4后向兼容模式下执行这个类? –

+0

类字节码甚至没有局部变量的名称。他们只是获得内存插槽编号。 – Nayuki