Enum列舉類
Eum列舉類的理解與使用
/**
* 列舉類:
* 1.列舉類其實就是相當於自給自足
* 將構造方法設為私有的,自己類內部建立列舉物件,並且為成員變數賦值。最後將物件設定靜態常量
* 等我們需要的時候通過 類名.物件名.get方法 將需要的成員屬性值獲取到
* 總結:簡單來說就是將常規的靜態常量進行封裝使用
*/
publicenum ShopStateEnum {
/*
* 這個類似 public static final ShopStateEnum CHECK=new ShopStateEnum(0,稽核中)
* 所以建構函式必須也傳入對應的引數類,但是因為建構函式必須是私有的增加可讀性
* 故只能在自己類內部使用,建立物件。不能在外部建立列舉類物件
*/
//因為是封裝的,所以需要通過int和String型別成員變數的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;
}
}
個人原創,若需轉載,請註明出處!!!