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
读后有收获,小礼物走一走,请作者喝咖啡。

作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南