java 枚舉詳解

不廢話,直接上代碼java

package com.ljq.test;

/**
* 枚舉用法詳解
* 
* @author jiqinlin
* 
*/
public class TestEnum {
   /**
    * 普通枚舉
    * 
    * @author jiqinlin
    *
    */
   public enum ColorEnum {
       red, green, yellow, blue;
   }
   
   /**
    * 枚舉像普通的類同樣能夠添加屬性和方法,能夠爲它添加靜態和非靜態的屬性或方法
    * 
    * @author jiqinlin
    *
    */
   public enum SeasonEnum {
       //注:枚舉寫在最前面,不然編譯出錯
       spring, summer, autumn, winter;

       private final static String position = "test";

       public static SeasonEnum getSeason() {
           if ("test".equals(position))
               return spring;
           else
               return winter;
       }
   }
   
   /**
    * 性別
    * 
    * 實現帶有構造器的枚舉
    * 
    * @author jiqinlin
    *
    */
   public enum Gender{
       //經過括號賦值,並且必須帶有一個參構造器和一個屬性跟方法,不然編譯出錯
       //賦值必須都賦值或都不賦值,不能一部分賦值一部分不賦值;若是不賦值則不能寫構造器,賦值編譯也出錯
       MAN("MAN"), WOMEN("WOMEN");
       
       private final String value;

       //構造器默認也只能是private, 從而保證構造函數只能在內部使用
       Gender(String value) {
           this.value = value;
       }
       
       public String getValue() {
           return value;
       }
   }
   
  /**
   * 訂單狀態
   * 
   * 實現帶有抽象方法的枚舉
   * 
   * @author jiqinlin
   *
   */
   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));//-1
       
       //--------------------------
       System.out.println("===========");
       System.err.println("季節爲" + SeasonEnum.getSeason());
       
       
       //--------------
       System.out.println("===========");
       for(Gender gender : Gender.values()){
           System.out.println(gender.value);
       }
      
       //--------------
       System.out.println("===========");
       for(OrderState order : OrderState.values()){
           System.out.println(order.getName());
       }
   }
   
}
相關文章
相關標籤/搜索