在JDK1.5之前,JAVA可以有兩種方式定義新類型:類和接口,對于大部分面向?qū)ο缶幊?,有這兩種似乎就足夠了,但是在一些特殊情況就不合適。例如:想要定義一個Color類,它只能有Red,Green,Blue三種,其他值則是錯誤,在JDK1.5之后便引入枚舉類型。
枚舉其實就是一種類型,跟int, char 這種差不多,就是定義變量時限制輸入的,你只能夠賦enum里面規(guī)定的值。
public enum Color{ RED,GREEN,BLUE ; // 定義三個枚舉的類型};枚舉中有三個取值,以后再取的時候,只能從這三個內(nèi)容取
public class GetEnumContent{ public static void main(String args[]){ Color c = Color.BLUE ; // 取出藍色 System.out.PRintln(c) ; }};可以直接使用在Switch語句上
public class SwitchPrintEnum{ public static void main(String args[]){ for(Color c:Color.values()){ // 輸出枚舉中的全部內(nèi)容 print(c) ; } } public static void print(Color color){ switch(color){ case RED:{ System.out.println("紅顏色") ; break ; } case GREEN:{ System.out.println("綠顏色") ; break ; } case BLUE:{ System.out.println("藍顏色") ; break ; } default:{ System.out.println("未知顏色") ; break ; } } }};使用enum關(guān)鍵字可以定義一個枚舉,也可以定義一個Eunm類
枚舉類的操作方法:

在枚舉已經(jīng)實現(xiàn)Comparable接口,所以在枚舉中的內(nèi)容可以排序。
案列一
import java.util.Iterator;import java.util.Set ;import java.util.TreeSet ;enum Color{ RED,GREEN,BLUE ;}public class ComparableEnum{ public static void main(String args[]){ Set<Color> t = new TreeSet<Color>() ; // 設(shè)置類型 t.add(Color.GREEN) ; // 加入綠色 t.add(Color.RED) ; // 加入紅色 t.add(Color.BLUE) ; // 加入藍色 Iterator<Color> iter = t.iterator() ; while(iter.hasNext()){ System.out.print(iter.next() + "、") ; } }};案列二
使用EnumMap
import java.util.EnumMap ;import java.util.Map ;enum Color{ RED , GREEN , BLUE ;}public class EnumMapDemo{ public static void main(String args[]){ Map<Color,String> desc = null ; // 定義Map對象,同時指定類型 desc = new EnumMap<Color,String>(Color.class) ; // 實例化EnumMap對象 desc.put(Color.RED,"紅色") ; desc.put(Color.GREEN,"綠色") ; desc.put(Color.BLUE,"藍色") ; System.out.println("====== 輸出全部的內(nèi)容 ======") ; for(Color c:Color.values()){ System.out.println(c.name() + " --> " + desc.get(c)) ; } System.out.println("====== 輸出全部的鍵值 ======") ; for(Color c:desc.keySet()){ System.out.print(c.name() + "、") ; } System.out.println() ; System.out.println("====== 輸出全部的內(nèi)容 ======") ; for(String s:desc.values()){ System.out.print(s + "、") ; } }};案列三
使用EnumSet
import java.util.EnumSet ;enum Color{ RED , GREEN , BLUE ;}public class EnumSetDemo{ public static void main(String args[]){ EnumSet<Color> esOld = null ; // 聲明一個EnumSet對象 EnumSet<Color> esNew = null ; System.out.println("======== EnumSet.copyOf(Color.class) =====") ; esOld = EnumSet.noneOf(Color.class) ; // 將枚舉的全部類型設(shè)置到EnumSet對象之中 esOld.add(Color.RED) ; // 增加內(nèi)容 esOld.add(Color.GREEN) ; // 增加內(nèi)容 esNew = EnumSet.copyOf(esOld) ; // 從已有的集合拷貝過來 print(esNew) ; } public static void print(EnumSet<Color> temp){ // 專門的輸出操作 for(Color c:temp){ // 循環(huán)輸出EnumSet中的內(nèi)容 System.out.print(c + "、") ; } System.out.println() ; }};新聞熱點
疑難解答