enum 類名{ 實例1,實例2,實例3.....; 方法、屬性、構造函數 }
public class EnumDemo01 { enum Fruit{ apple,banana,orange; } public static void main(String[] args) { fun(Fruit.apple); } public static void fun(Fruit f){ System.out.println("fruit"); } }
構造函數必須定義爲私有的;java
public class EnumDemo01 { enum Fruit{ apple("1"),banana("2"),orange("3"); private String value; //構造函數必須是私有的 private Fruit(String value){ this.value = value; } } public static void main(String[] args) { fun(Fruit.apple); } public static void fun(Fruit f){ System.out.println(f.value); } }
public class EnumDemo01 { enum Fruit{ apple("1"){ @Override public String getValue() { return "蘋果"; } },banana("2"){ @Override public String getValue() { return "香蕉"; } },orange("3"){ @Override public String getValue() { return "橘子"; } }; private String value; private Fruit(String value){ this.value = value; } public abstract String getValue(); } public static void main(String[] args) { fun(Fruit.apple); } public static void fun(Fruit f){ System.out.println(f.getValue()); } }
經常使用方法:app
public class EnumDemo01 { enum Fruit{ apple("1"){ @Override public String getValue() { return "蘋果"; } },banana("2"){ @Override public String getValue() { return "香蕉"; } },orange("3"){ @Override public String getValue() { return "橘子"; } }; private String value; private Fruit(String value){ this.value = value; } public abstract String getValue(); } public static void main(String[] args) { fun(Fruit.apple); } public static void fun(Fruit f){ System.out.println(f.name()+"的次序:"+f.ordinal()); System.out.println(Fruit.valueOf("orange").getValue()); System.out.println(f.name()); Fruit[]fs = Fruit.values(); System.out.print("Fruit實例:"); for(Fruit e:fs){ System.out.print(e.getValue()+"、"); } } }
package com.melon.basic.enumeration; 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是一個抽象類,獲取一個類型的枚舉類型內容可使用allOf方法 */ private static void testEnumSet() { EnumSet<Light> currEnumSet = EnumSet.allOf(Light.class); for (Light aLightSetElement : currEnumSet) { System.out.println("當前EnumSet中數據爲:" + aLightSetElement); } } }