2012-09-18 19 views
0
​​

在主函數e初始化爲Day.SAT,但爲什麼e.MON不是錯誤?它是否有意義初始化它?將枚舉實例引用爲另一個該類型實例的字段是否合法?

+0

爲什麼會拋出錯誤?它完全按照你說的去做。 如果你想輸出你初始化的那一天,你應該只是'System.out.println(e);' 你目前的代碼不會拋出一個錯誤,但它會引發一個關於靜態訪問的警告。 (e.MON不是靜態訪問,你可以使用Day.MON) 此外,就像一個快速的FYI,你應該在駱駝案例中標記你的類:http://java.about.com/od/javasyntax/ a/nameconventions.htm –

+0

我冒昧地刪除了一些與問題無關的代碼。 –

+0

請閱讀 http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html我知道這是脫離主題,但我會爲所有會運氣不好的人閱讀代碼,因爲對我來說,這是一種痛苦。 –

回答

1

枚舉值幾乎「只」static final字段。在Java中,您可以通過引用訪問靜態字段。你不應該做到這一點,但因爲它很混亂。

在本質上這兩條線做同樣的事情(假設有一個Day e某處定義他們上面):

System.out.println(Day.MON); // sane, normal way 
System.out.println(e.MON); // supported, but discouraged way. 
0

e.MON是「喜歡」通過的那一個實例變量訪問類的靜態成員類,所以不會顯示錯誤。

相關問題