1. 程式人生 > >什麽是枚舉及枚舉的使用場合

什麽是枚舉及枚舉的使用場合

ace switch 輸出 定義 兩個 long fin 個數 成員

這裏主要講解的是Java的枚舉類型 什麽是枚舉? 以我的理解答:枚舉是我們自己定義的一個集合,比如說我們數學裏面所學的集合A={1、2、3},當我們要使用A這個集合的時候,我們只能夠使用集合A裏面的1、2、3這三個元素,不是A裏面的元素我們就不可以使用。 同樣,枚舉和這個集合是類似的,當我們定義了一個枚舉類型的時候,我們聲明它裏面有幾個元素,在我們使用這個枚舉的時候,我們只能夠使用它有的元素,沒有的元素我們是無法使用,系統就會報錯! 枚舉還有一個特點,就是可以代表數值,比如說第一個定義的元素對應的值為0,每個枚舉元素從0開始,逐一增加。此時,這個數值也代表他們本身,相當於每一個元素有兩個名字。
常使用的地方:我們要從另一個函數得到一個值,但是這個值只能夠在一個範圍內的,此時我們就可以使用枚舉來定義這個範圍。限制另外一個函數能夠傳遞進來的值,只能夠是枚舉類型裏面的元素 下面我們講解一下java該如何使用枚舉 枚舉類型: 1、我們可以這樣來定義一個枚舉類型 public enum Color{ Red,Blue,Black,Green; } 然後可以這樣來使用:Color myColor = Color.Red 2、枚舉類型提供了兩個有用的靜態方法 values( ) 和 valueOf( ) 我們可以很方便的使用它們,
例如: for(Color c : Color.values( )) System.out.println(c); 3、例如: package Enum; public class ColorTest { public static void main(String[] args) { Color myColor = Color.Red; System.out.println(myColor); System.out.println("........................"); for(Color color:Color.values()){ System.out.println(color); } } } 4、在 switch() 括號中一共可以5種類型:char、short、int、long、enum(枚舉類型)
可將枚舉作為方法的參數,通過在方法中做相應的判斷,作出不同的結果。 package Enum; public class EnumTest01 { public static void doWhat(OP op){ switch(op){ case TURE_LEFT: System.out.println("向u24038 轉); break; case TURE_RIGHT: System.out.println("向u21491 轉); break; case SHOOT: System.out.println("射u20987 "); break; } } public static void main(String[] args) { EnumTest01.doWhat(OP.SHOOT); } } enum OP{ TURE_LEFT,TURE_RIGHT,SHOOT; } 輸出結果:射擊 5、定義枚舉類型時本質上就是定義一個類別,只不過很多細節由編譯器幫我們完成了,所以某些程度上,enum關鍵字的作用 就像是class或interface 6、 當我們使用“enum”定義枚舉類型時,實質上我們定義出來的類型繼承自java.lang.Enum類型,而枚舉的成員其實就是我們定義的枚舉類型的一 個實例(Instance),他們都被預設為final,所以我們無法改變他們,他們也是static成員,所以我們可以通過類型名稱直接使用他們,當然 最重要的,他們都是公開的(public)。 即,我們定義的每個枚舉類型都繼承自java.lang.Enum類,枚舉中的每一個成員默認都是public static final 的。 而每個枚舉的成員其實就是我們定義的枚舉類型的一個實例(Instance)。換句話說,當定義了一個枚舉類型後,在編譯時刻就能確定該枚舉類型有幾個實例,分別是什麽。在運行期間我們無法再使用該枚舉類型創建新的實例了,這些實例在編譯期間就已經完全確定下來了。 所以在:Color myColor = Color.Red 中,沒有new Color()。而是直接賦值 package Enum; public enum Coin { banjin("半u26020 "),baliang("八u20004 "),qingyuan("清u28170 "),liping("莉u-31731 "); private String name; Coin(String name){ this.name = name; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public static void main(String[] args) { Coin coin = Coin.baliang; System.out.println(coin.getName()); } } 輸出:八兩 7、通過coin.ordinal()來得到枚舉所代表的值,即每個枚舉元素從0開始,逐一增加 8、 //檢查權限之類的,如一個經理、員工、顧客對一個工具的使用權限,一般用枚舉來處理 因為這樣子可以用來控制傳入判斷的參數只能夠是該枚舉類型的數,從而限制傳入的參數。 package Enum; public class AccessControl { public static boolean checkRight(AccessRight access){ if(access == AccessRight.MANAGER){ return true; } else if(access == AccessRight.DEPARMENT){ return false; } else return false; } public static void main(String[] args) { System.out.println(checkRight(AccessRight.DEPARMENT)); } } enum AccessRight{ MANAGER,DEPARMENT,EMPLOYEE; } 通過這樣,只能夠傳遞AccessRight類型的參數,其他參數都是不合法的。 9、 static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) 返回帶指定名稱的指定枚舉類型的枚舉常量。 可以這樣子使用 AccessRight access = AccessRight.valueOf("MANAGER");//只要AccessRight中有MANAGER的元素就可以返回這個元素,即將String類型轉換為AccessRight類型

什麽是枚舉及枚舉的使用場合