6
這段代碼怎麼沒有編譯?Java:這怎麼不編譯?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
編譯報道:
enum declarations allowed only in static contexts.
但後來當我把裏面的枚舉類A,一切都還好。
這很令人驚訝。我不認爲我在C++中遇到了這個問題。
枚舉是一種內在靜態的野獸。在上面的例子中,你只希望有一個Enum.AD對象。但是如果你在一個非靜態類中聲明一個枚舉,你會(理論上)需要一個不同的Enum.AD實例用於每個合併範圍。這沒有道理......因此它是被禁止的。 – 2009-11-04 06:59:32