java 枚舉詳解

在實際編程中,每每存在着這樣的「數據集」,它們的數值在程序中是穩定的,並且「數據集」中的元素是有限的。java

例如星期一到星期日七個數據元素組成了一週的「數據集」,春夏秋冬四個數據元素組成了四季的「數據集」。spring

在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());
       }
   }
   
}
函數

相關文章
相關標籤/搜索