java(二十二)枚舉

枚舉類:實例有限並且固定的類。java

在早期,使用一些靜態常量來表示枚舉,但存在不少問題:類型不安全、沒有命名空間,打印輸出的值沒有具體意義。
安全

jdk 1.5 之後添加了枚舉類。用關鍵字enum來表示,跟class、interface的地位是相同的。spa

枚舉類是一種特殊的類:繼承

  1. 繼承了 java.lang.Enum 而不是Object類,因此不能顯式繼承其餘父類。java.lang.Enum 類實現了兩個接口:java.lang.Serializable 和 java.lang.Comparable。索引

  2. 使用enum定義、非抽象的枚舉類默認會用final修飾,所以不能派生子類。接口

  3. 枚舉類的構造器只能用private來修飾。it

  4. 枚舉類的全部實例必須顯式在第一行聲明,不然永遠不能構建實例。class


若是想要使用枚舉類的某個實例,能夠用 枚舉類名.實例名 的形式調用。jdk

枚舉類提供了一個values方法,能夠很方便的用來遍歷枚舉類:命名空間

for( 枚舉類名 s : 枚舉類名.values() ){

}

注意: jdk 1.5 之後,switch控制語句可使用枚舉類,case語句判斷時直接用枚舉類的實例名,不用加枚舉類的限定。

java.lang.Enum類提供了幾個方法:

int compareTo() :比較順序。

String name() :返回該枚舉類實例的名稱。

String toString() :與name() 方法類似,也是返回實例的名稱,可是更爲經常使用。

int ordinal() :返回枚舉實例在枚舉類中的索引值。


實現接口的枚舉類:

能夠由枚舉類來實現接口的方法,這樣全部的枚舉值調用同一個方法。

也能夠每一個枚舉值分別實現接口的方法,這樣調用每一個枚舉值的方法的時候就不同。


包含抽象方法枚舉類:

不一樣的枚舉值對同一個方法有不一樣的實現的時候,能夠定義這個方法爲抽象方法。而後四個枚舉值提供不一樣的實現。

在枚舉類裏定義抽象方法時,不能顯式的爲枚舉類添加abstract關鍵字,但系統會隱式的添加。

由於枚舉類須要顯式的建立枚舉值,因此每一個枚舉值必須提供抽象方法的實現。

相關文章
相關標籤/搜索