1. 程式人生 > 實用技巧 >java 列舉 enum使用

java 列舉 enum使用

public class linshiTest2 {
    /**
     * 普通列舉
     */
    public enum ColorEnum {red, green, yellow, blue;}

    /**
     * 列舉像普通的類一樣可以新增屬性和方法,可以為它新增靜態和非靜態的屬性或方法
     */
    public enum SeasonEnum {
        //注:列舉寫在最前面,否則編譯出錯
        spring, summer, autumn, winter;
        public static final String position = "test";

        
public static SeasonEnum getSeason() { if ("test".equals(position)) return spring; else return winter; } } /** * 實現帶有構造器的列舉 */ public enum Gender { //通過括號賦值,而且必須帶有一個參構造器和一個屬性跟方法,否則編譯出錯 // 賦值必須都賦值或都不賦值,不能一部分賦值一部分不賦值;如果不賦值則不能寫構造器,賦值編譯也出錯
MAN("MAN"), WOMEN("WOMEN"); private final String value; //構造器預設也只能是private, 從而保證建構函式只能在內部使用 Gender(String value) { this.value = value; } public String getValue() { return value; } } // 實現帶有抽象方法的列舉 public
enum OrderState { /** * 已取消 */ CANCEL { public String getName() { return "已取消"; } }, /** * 待稽核 */ WAITCONFIRM { public String getName() { return "待稽核"; } }, /** * 等待付款 */ WAITPAYMENT { public String getName() { return "等待付款"; } }, /** * 正在配貨 */ ADMEASUREPRODUCT { public String getName() { return "正在配貨"; } }, /** * 等待發貨 */ WAITDELIVER { public String getName() { return "等待發貨"; } }, /** * 已發貨 */ DELIVERED { public String getName() { return "已發貨"; } }, /** * 已收貨 */ RECEIVED { public String getName() { return "已收貨"; } }; public abstract String getName(); } public static void main(String[] args) { //列舉是一種型別,用於定義變數,以限制變數的賦值;賦值時通過“列舉名.值”取得列舉中的值 ColorEnum colorEnum = ColorEnum.blue; switch (colorEnum) { case red: System.out.println("color is red"); break; case green: System.out.println("color is green"); break; case yellow: System.out.println("color is yellow"); break; case blue: System.out.println("color is blue"); break; } //遍歷列舉 System.out.println("遍歷ColorEnum列舉中的值"); for (ColorEnum color : ColorEnum.values()) { System.out.println(color); } //獲取列舉的個數 System.out.println("ColorEnum列舉中的值有" + ColorEnum.values().length + "個"); //獲取列舉的索引位置,預設從0開始 System.out.println(ColorEnum.red.ordinal());//0 System.out.println(ColorEnum.green.ordinal());//1 System.out.println(ColorEnum.yellow.ordinal());//2 System.out.println(ColorEnum.blue.ordinal());//3 // 列舉預設實現了java.lang.Comparable介面,預設根據角標 比較 System.out.println(ColorEnum.red.compareTo(ColorEnum.green)); System.out.println("==========="); System.out.println("季節為" + SeasonEnum.getSeason()); System.out.println("==========="); for (Gender gender : Gender.values()) { System.out.println(gender.getValue()); System.out.println(gender.value); } System.out.println("==========="); for (OrderState order : OrderState.values()) { System.out.println(order.getName()); } } }