2017-07-17 87 views
2

我想用少數常量創建枚舉。我想要枚舉是單身。下面的代碼,我得到的編譯錯誤在日食:帶常量的單例枚舉

語法錯誤,插入「)」

完成在第5行的方法聲明我無法找出什麼是錯。

public enum Days { 

     SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY; 

     INSTANCE; // line 5 

     public Days getInstance() { 
     return INSTANCE; 
    } 
} 

回答

5

在枚舉聲明中,;在最後一個枚舉值之後使用。

所以在這裏:

SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY; 
INSTANCE; 

這應該被刪除:

INSTANCE; 

我想枚舉是單

這已經是這樣了,但對於枚舉值(SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY)其中每一個都是單身人士。

枚舉類本身不是一個單例,並不是爲了它而設計的。

,而不是試圖訪問這樣的枚舉類:

public Days getInstance() { 
    return INSTANCE; 
} 

中只使用了類:Days

+0

讓我確認我的理解在這裏,1.你的意思是說Enums是默認的單例,INSTANCE變量返回對單例實例的引用。 2.爲每個常量創建單例實例,如SUNDAY,MONDAY等等。 –

+0

第二點是好的,但第一個,沒有。枚舉類只是類。這個類提供的單個單例是由你聲明的枚舉值(SUNDAY,MONDAY等)表示的。 – davidxxx

+0

如果枚舉默認情況下不是單例,那麼如何使它成爲單例。請告知,因爲我還不清楚。 –

0

您不能破壞ENUM varriables的聲明,然後再繼續。 用逗號將實例添加到第3行,您將能夠編譯該程序。

星期一,星期一,星期二,星期三,星期四,星期五,星期六,實例;

1

取出INSTANCE線,和靜態訪問枚舉像這樣:Days.MONDAY

枚舉並不意味着實例化,這意味着沒有必要嘗試使您的枚舉爲單例。