2013-01-09 48 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