SCJP認證 1.5.5 聲明枚舉(1)

從5.0版本開始,Java允許限制一個變量只能具有幾個預定義的值中的某個值——換句話說,是來自於枚舉列表中的一個值(枚舉列表中的奇怪項背奇怪地成爲“枚舉”——enum)

利用枚舉有助於減少代碼中的bug。

例如,在咖啡店應用程序中,你可能想將規格選擇限制爲BIG,HUGE和OVERWHELMING,如果允許訂購LARGE或GRANDE規格的,則可能引發錯誤。這是枚舉就可以提供幫助。通過下面簡單的聲明,就可以保證編譯器就會阻止將除BIG,HUGE和OVERWHELMING之外的任何內容賦予CoffeeSize

從此,獲得CoffeeSize的唯一方式是使用像下面這樣的語句:

將枚舉常量全部大寫並不是必須的,但根據Sun的編碼規範,常量要大寫,這是一個好的做法。

枚舉的基本成分是其常量(即BIG、HUGE和OVERWHELMING),儘管一分鐘後你將看到枚舉還包含更多內容。枚舉可以被聲明爲他們自己獨立的類,或者被聲明爲i類成員,但是不能在方法內聲明它們!

在類外聲明枚舉如下所示:

 上面的代碼可以是單一的文件的一部分(記住,該文件必須被命名爲CoffeeTest.java,因爲這是該文件中的公共類的名稱)。要記住的要點是:可以只用public或默認修飾符聲明類外的美劇,就像飛內部類一樣。下面是在類內聲明枚舉的一個例子:

通過這些例子呀一重點理解的是:枚舉可以在自己的類內聲明,也可以位於另一個類中,而訪問枚舉成員的語法依賴於聲明枚舉的位置。

下面的代碼是非法的:

 Java語言設計者允許選擇在枚舉聲明的末尾位置放置一個分號(在這個枚舉聲明沒有其他聲明的情況下),着和容易是人困惑:

那麼,在創建枚舉時會得到什麼呢?要記住的最重要的事情是:枚舉不是字符串或整數!每個枚舉的CoffeeSize類型實際上都是CoffeeSize的實例。換句話說,BIG是CoffeeSize類型的。可以將枚舉看做類的一種,形式如下(但不完全這樣) :

 

注意每個枚舉值BIG、HUGE和OVERWHELIMING是如何成爲類型CoffeeSize的實例的。它們被表示爲static和final,在Java世界中,這被當做常量。還要注意,每個枚舉值都知道它的索引或位置。換句話說,枚舉值中的順序是生民事決定的。可以將CoffeeSize枚舉看做存在於CoffeeSize類型的數組中。在後面的一張中將看到,可以通過爲任何枚舉類型調用values()方法來遍歷枚舉的值(本章中不必關心這一點)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章