1. 程式人生 > >Enum列舉類

Enum列舉類

Eum列舉類的理解與使用

/**

 * 列舉類:

 * 1.列舉類其實就是相當於自給自足

 * 將構造方法設為私有的,自己類內部建立列舉物件,並且為成員變數賦值。最後將物件設定靜態常量

 * 等我們需要的時候通過    類名.物件名.get方法     將需要的成員屬性值獲取到

 * 總結:簡單來說就是將常規的靜態常量進行封裝使用

 */

publicenum ShopStateEnum {

/*

 * 這個類似 public static final ShopStateEnum CHECK=new ShopStateEnum(0,稽核中)

 * 所以建構函式必須也傳入對應的引數類,但是因為建構函式必須是私有的增加可讀性

* 只能在自己類內部使用,建立物件。不能在外部建立列舉類物件

 */

//因為是封裝的,所以需要通過intString型別成員變數的set和get方法獲取列舉值

CHECK(0,"稽核中"),OFFlINE(-1,"非法店鋪"),SUCCESS(1,"操作成功"),PASS(2,"通過認證"),

INNER_ERROR(-1001,"內部系統錯誤"),NULL_SHOPID(-1002,"ShopId為空");

想要獲取上面的列舉值必須通過這兩種型別的set和get方法獲取

privateintstate;

private String  stateInfo;

/*

 * 私有建構函式,  為了不讓列舉類被建立物件,

 * 所以設定私有建構函式,並傳入與上面對應的兩個型別引數

 */

private ShopStateEnum(intstate,String stateInfo ){

this.state=state;

this.stateInfo=stateInfo;

}

/**

 * 普通方法

 * 依據傳入的state返回相應的列舉值

 */

publicstatic ShopStateEnum stateOf(intstate){

/*

 * 列舉的for迴圈,獲取的是列舉常量,

 * 即獲取的是CHECK,OFFlINE...

for(ShopStateEnum stateEnum:ShopStateEnum.values()){

/*

stateEnum.getState()==stateEnum.CHECK.getState()

 * 獲取到的是CHECK的state值0

 * 如果傳進來的狀態值與列舉中的狀態值一致,則返回對應的列舉常量名

 * 其他類可根據這個方法獲取列舉常量名從而獲得對應的列舉值

 */

if(stateEnum.getState()==state){

returnstateEnum;

}

}

//如果不滿足要求則返回空值

returnnull;

}

/*

 * 刪除set方法的原因:

 * 因為列舉類就是常量定義,

 * 所以不希望定義好的成員變數屬性值通過set方法被改變,

 * 跟建構函式被設為私有是一樣的道理,

 * 不希望在外部建立列舉類物件被改變成員變數值

publicint getState() {

returnstate;

}

public String  getStateInfo() {

returnstateInfo;

}

}

個人原創,若需轉載,請註明出處!!!