枚舉定義:
一組具名的值的有限集合。
一、枚舉的基本特性
當創建枚舉類enum時,編譯器會生成一個類,這個類繼承與java.lang.Enum。
不能繼承一個枚舉。
1、枚舉里面的方法
a、values()
按順序返回所有的枚舉值。
values()方法是有編譯器添加的static方法。編譯器還添加了valueOf()方法。
Enum中valueof 需要兩個參數,而編譯器自己添加的這個valueof只需要一個參數。
由于values()方法是有編譯器插入到enum定義的static方法,所以,如果將enum實例向上轉型為Enum,那么values()方法就不可訪問,不過在Class中有一個getEnumConstants()方法,所以即便Enum接口中沒有values()方法,我們仍然可以通過Class對象取得所有enum實例。
b、valueof(String name)
根據名稱返回該枚舉
c、valueOf(Class<T> enumType,String name)
返回特定枚舉名稱和枚舉類型的枚舉
d、name()
返回該枚舉的名稱
二、如何有效的使用枚舉
1、在接口中對枚舉進行分組
由于無法從enum繼承子類,當我們想擴展原enum中的元素時,希望對enum中的元素進行分組。
這時候我們可以在接口內部,創建該實現該接口的枚舉,以此將元素進行分組,可以達到將美劇元素分組的目的。
2、EnumSet
enum可以算是一種集合,但是它不能去動態的增加或是刪除元素。
EnumSet算是對該特點的補充,因為enum里面的元素也都是唯一的,Set集合中的元素也都是唯一的。
EnumSet中的元素必須來自某種enum.
EnumSet.allOf(Color.class);創建包含某種enum 所有元素的set集合
EnumSet.of(Color.BLACK) 創建包含某種enum 下 某一個元素的集合。
3、EnumMap
EnumMap是一種特殊的Map,它要求其中的鍵必須來自一個enum,由于enum本身的限制,所以EnumMap在內部可有數組實現。