package com.csdn.myEnum; import java.util.EnumMap; import java.util.EnumSet; public class LightTest { // 1. 定義枚舉類型 public enum Light { // 利用建構函式傳參 RED (1), GREEN (3), YELLOW (2); // 定義私人變數 private int nCode ; // 建構函式,枚舉類型只能為私人 private Light( int _nCode) { this . nCode = _nCode; } @Override public String toString() { return String.valueOf ( this . nCode ); } } /** * @param args */ public static void main(String[] args ) { // 1. 遍曆枚舉類型 System. out .println( " 示範枚舉類型的遍曆 ......" ); testTraversalEnum (); // 2. 示範 EnumMap 對象的使用 System. out .println( " 示範 EnmuMap 對象的使用和遍曆 ....." ); testEnumMap (); // 3. 示範 EnmuSet 的使用 System. out .println( " 示範 EnmuSet 對象的使用和遍曆 ....." ); testEnumSet (); } /** * 示範枚舉類型的遍曆 */ private static void testTraversalEnum() { Light[] allLight = Light.values (); for (Light aLight : allLight) { System. out .println( " 當前燈 name : " + aLight.name()); System. out .println( " 當前燈 ordinal : " + aLight.ordinal()); System. out .println( " 當前燈: " + aLight); } } /** * 示範 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不過 key 要是枚舉類型 */ private static void testEnumMap() { // 1. 示範定義 EnumMap 對象, EnumMap 對象的建構函式需要參數傳入 , 預設是key 的類的類型 EnumMap<Light, String> currEnumMap = new EnumMap<Light, String>( Light. class ); currEnumMap.put(Light. RED , " 紅燈 " ); currEnumMap.put(Light. GREEN , " 綠燈 " ); currEnumMap.put(Light. YELLOW , " 黃燈 " ); // 2. 遍曆對象 for (Light aLight : Light.values ()) { System. out .println( "[key=" + aLight.name() + ",value=" + currEnumMap.get(aLight) + "]" ); } } /** * 示範 EnumSet 如何使用, EnumSet 是一個抽象類別,擷取一個類型的枚舉類型內容<BR/> * 可以使用 allOf 方法 */ private static void testEnumSet() { EnumSet<Light> currEnumSet = EnumSet.allOf (Light. class ); for (Light aLightSetElement : currEnumSet) { System. out .println( " 當前 EnumSet 中資料為: " + aLightSetElement); } } } |