
在工作中如何使用枚举(enum) 原创
春节不停更,此文正在参加「星光计划-春节更帖活动」
日积月累,水滴石穿 😄
什么是枚举
枚举是JDK 1.5
中引入的新特性,由一组固定的常量组成合法值的类型,例如一年中的季节、一周的星期数。枚举其实就是特殊的类,继承了java.lang.Enum
类,并实现了java.lang.Seriablizable
和 java.lang.Comparable
两个接口。域成员均为常量,且构造方法被默认为私有。
如何定义枚举
先来看看枚举是如何定义的!我们定义四个值,分别为 春天、夏天、秋天、冬天。
以上方式就是枚举类的定义方式。很简单!那我们再来看看枚举类提供的函数。
枚举的函数
枚举的使用
上面已经简单的介绍了枚举的定义与枚举的函数!那本节就带大家来看看在工作当中如何去使用枚举,哪些地方可以去使用枚举!
1、定义常量
就用上述的SeasonEnum
枚举类。
在if
、switch
里的判断语句值都能用枚举进行替代,提高代码可读性。
2、参数接收
接口的请求参数值可以用枚举进行接收!比如OrderDTO
类的orderType
字段的类型,就可以使用枚举进行接收!那有什么好处呢?
- 1、代码可读性,会让其他开发者,一眼就知道订单类型有哪一些类型值。
- 2、明确订单类型的范围。可以防止用户随意传值。
这里还是用SeasonEnum
枚举类来演示。
提供对外接口
然后进行调用:http://localhost:8080/save
,响应提示 value 不是声明的 Enum 实例名称之一
。
也就是说orderType
的值,只能为 SeasonEnum
枚举类所声明的实例。
3、码值转换
使用枚举类实现可以省略掉许多的 if/else
。大多数用于对接不同的系统,比如:接到一个与银行对接的功能,流程如下:前端 -》 本系统后端 -》调用银行接口。 其中有一个支付状态的码值。在自己系统 1-待支付,而在银行那边 0-待支付。两个系统之间的码值不一致,所以本系统就需要配置转换规则。而这时候就可以使用枚举类来进行实现。
3.1、编写枚举基类
编写枚举基类,所有枚举类都需要实现该接口,如果基类满足不了需求,子类可以随意扩展。
3.2、编写支付枚举类
实现BaseEnum
接口,并自行扩展 channel
、channelDesc
两个字段,并增加match
方法。
3.3、测试
在某些情况使用枚举,可以省略掉非常多的if/else
。
- 如你对本文有疑问或本文有错误之处,欢迎评论留言指出。如觉得本文对你有所帮助,欢迎点赞和关注。
