原創(chuàng)聲明:本文為作者原創(chuàng),未經(jīng)允許不得轉(zhuǎn)載,經(jīng)授權(quán)轉(zhuǎn)載需注明作者和出處
一直覺得java的枚舉就是個雞肋,用得并不多,入坑這么多年也沒正眼瞧過它。這段時間突然嘗到甜頭了,拿出來分享下。
廢話不多講,首先假設我們的需求是這樣的,有一個用戶表,里面存了用戶的性別,分別是保密、男、女三個,我們用int類型0、1、2來表示。當我們要返回給前端用戶性別的時候無非就兩種方案:
public enum Gendar {
KEEP(0, "保密"), MALE(1, "男"), FEMALE(2, "女");
private int index;// 性別索引
private String gendar;// 性別內(nèi)容
private static List<Gendar> gendarList;
/**
* @Title: getGender @Description: TODO(獲取性別) @param @param
* genderIndex @param @return 設定文件 @return Gender 返回類型 @throws
*/
public static String getGendar(int gendarIndex) {
initList();
for (Gendar gendar : gendarList) {
if (gendar.index == gendarIndex) {
return gendar.gendar;
}
}
return null;
}
/**
* @Title: initList @Description: TODO(初始化genderList) @param 設定文件 @return
* void 返回類型 @throws
*/
public static void initList() {
if (gendarList == null) {
gendarList = new ArrayList<Gendar>();
gendarList.add(KEEP);
gendarList.add(MALE);
gendarList.add(FEMALE);
}
}
private Gendar(int index, String gendar) {
this.index = index;
this.gendar = gendar;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getGendar() {
return gendar;
}
public void setGendar(String gendar) {
this.gendar = gendar;
}
}
使用的時候我們直接調(diào)用getGendar方法:
public static void main(String[] args) {
System.out.println(Gendar.getGendar(0));
}
運行效果:
以上是處理固定的性別,如果在項目中遇到不固定的情況,比如平臺的用戶角色什么的,萬惡的產(chǎn)品經(jīng)理今天加一個明天刪一個,用switch、if..else什么的維護起來非常麻煩,而用枚舉就顯得很優(yōu)雅很方便,只要增加或注釋調(diào)一個常量,在初始化列表中把這個常量添加進去或者注釋掉就行了。