Java 枚舉類的簡單介紹
綜述
??enum 的全稱為 enumeration, 是Java1.5引入的新特性,通過關鍵字enum來定義枚舉類。它是一種特殊類,和普通類一樣可以使用構造器、定義成員變量和方法,也能實現一個或多個接口,但枚舉類不能繼承其他類。
優點:將常量組織起來,統一管理。
典型應用場景:錯誤碼、狀態機、常量值是否符合約定等,避免使用繁雜的if-else語句。
??對于業務開發來說,隨著業務發展,需求只會越來越復雜,為了考慮到各種各樣的情況,代碼中不可避免的會出現很多if-else。一旦代碼中if-else過多,就會大大的影響其可讀性和可維護性,而且代碼顯得很low,此時,就需要使用枚舉類了。
枚舉實現接口
??為了判斷業務端傳入的一個值(例如,星期幾)是否符合約定的值,我們通過實現接口來查詢此值是否在枚舉類中存在,若存在,則是符合約定;否則,可以忽略本次請求。
private static void getWeekRemark(Integer id) {
String remark = WeekEnum.getRemarkById(id);
if (StringUtils.isBlank(remark)) {
System.out.println("id = " + id + " 是一個不符合約定的值,請檢查!");
} else {
System.out.println("remark的值是 " + remark);
}
}
其中,星期枚舉類的定義如下:
import java.util.Arrays;
/**
* @Author Wiener
* @Date 2022-10-16
* @Description: 星期枚舉類
*/
public enum WeekEnum {
SUNDAY(0, "星期日"),
MONDAY(1, "星期一"),
TUESDAY(2, "星期二"),
WEDNESDAY(3, "星期三"),
THURSDAY(4, "星期四"),
FRIDAY(5, "星期五"),
SATURDAY(6, "星期六"),
DEFAULT(7, "");
private Integer id;
private String remark;
public Integer getId() {
return id;
}
public String getRemark() {
return remark;
}
WeekEnum(Integer id, String remark) {
this.id = id;
this.remark = remark;
}
public static String getRemarkById(Integer id) {
// values()返回枚舉類中所有的值,如MONDAY、FRIDAY
return Arrays.stream(WeekEnum.values()).filter(e ->
e.getId().equals(id)).findAny().orElse(DEFAULT).getRemark();
}
}
方法getRemarkById中使用了values()方法,用以返回 enum 實例的數組,而且此數組中的元素與 enum 中聲明時的順序一致。
??如果傳入的id不是0到6的正整數,getRemarkById的返回值是空字符串,說明id的值不符合約定,直接忽略本次請求即可。
??枚舉類的此功能是不是比寫一堆if-else給力?老鐵,GET到了嗎?歡迎點贊留言!
Reference
讀后有收獲,小禮物走一走,請作者喝咖啡。
Buy me a coffee. ?Get red packets.作者:樓蘭胡楊
本文版權歸作者和博客園共有,歡迎轉載,但請注明原文鏈接,并保留此段聲明,否則保留追究法律責任的權利。

浙公網安備 33010602011771號