java

榨干枚举

2020-06-18  本文已影响0人  alonwang

前言

数学计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。

枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

维基百科

枚举有穷序列集的特性与现实中很多事物的特点相符,在编程中也极其有用.Java语言提供了枚举机制,日常开发我们可能只用到了它的基础功能,而实际上,得益于Java中枚举的实现机制,它还有很多有用的特性.本文将简单介绍Java枚举的原理.以及如何有效的使用枚举.

正文

枚举的基础用法

如果之前不了解枚举,那么最常用的形式可能是这样:手动给枚举加一个序号,并通过这个序号完成数字到枚举的转换,


image.png

这种方法当然可用,但是比较下代码量和便利性,好像不是很值得. 接口里定义变量当做枚举来做不是更香吗, 那枚举到底如何实现的呢?

枚举是一种特殊的类

枚举通过关键字enum定义,但实质上它还是类

image.png

编译器会对枚举做特殊处理,上面的Food枚举经过编译器处理后生成的字节码,我手动翻译为代码,大概是这样(这段代码是不能运行的,编译器写死了Enum不能被直接编写代码继承)

image.png

以上有几点需要注意

既然如此,好玩的就来了

我们可以让枚举容纳业务逻辑,而不是在业务层去判断类型处理.例如

image.png

我们可以把这些逻辑搬移到枚举中

image.png

然后直接这样使用,是不是简单明了

image.png

后记

让我们一起,榨干枚举~

上一篇下一篇

猜你喜欢

热点阅读