Java中的枚舉類型

enum關鍵字是一個看似很小的特性。使用這個關鍵字,我們可以創建一個枚舉類型。

事實上,在使用enum關鍵字創建新的枚舉類型時,其實是創建了一個java.lang.Enum 類的子類。枚舉中每個指定的值都可以看做是該類的一個實例。

不過我們並不需要在意枚舉的本質,只需要將它當做一種創建數據類型的方式,然後可以將獲得的類型直接使用即可。


在項目開發過程中,我們經常需會用到一些常量,比如某個屬性的一組可能值等。我們不建議在程序中直接判斷常量的值(這樣容易出錯,而且需要開發人員記住每個常量的精確值)。可以使用枚舉類型來保存一組不變的值。

public enum State{
    ACTIVE, CLOSED
}

枚舉還有一個非常實用的特性,即應用在switch語句中。這使程序的可讀性大大提高。

State currentState=State.ACTIVE;  
switch (currentState) { 
    case ACTIVE: 
        //blabla
        break; 
    case CLOSED: 
        //blabla 
        break; 
} 

我們可以在枚舉類中添加各種變量和方法,或者覆蓋一個方法(比如toString())。

public enum State{
    ACTIVE("Active",1), CLOSED("Closed",0);
    //成員變量、構造方法、get/set方法、覆蓋方法等    
}  

EnumMap 和 EnumSet這兩個類使我們可以更加方便的處理枚舉類型。

EnumMap 類是 java.util.Map 接口的一個特殊實現,該接口中的key是一個枚舉類型。

Map<State, Integer> map = new EnumMap<State, Integer>(State.class);
map.put(State.ACTIVE, 1);

EnumSet 類則實現了 java.util.Set 接口,該接口保存了一種枚舉類型的值的集合,我們可以使用它來保存一組特性/屬性值。EnumSet使我們可以向操作其他Set對象一樣操作一組枚舉。

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