千家信息网

java中枚举的介绍和用法

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"java中枚举的介绍和用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java中枚举的介绍和用法"吧!前言相信不少java开发者写过状
千家信息网最后更新 2025年01月19日java中枚举的介绍和用法

本篇内容主要讲解"java中枚举的介绍和用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java中枚举的介绍和用法"吧!

前言

相信不少java开发者写过状态变更的业务,比如订单流程、请假流程等等。一般会搞一个状态标识来标识生命周期的某个阶段。很多人会写这种逻辑:

如果流程几十个岂不是要if到爆炸。还有这"0"、"1"是几个意思?

优化的办法当然可以使用设计模式中的状态模式来搞,允许一个具有状态的对象根据其状态封装同一对象的不同行为。我们可以编程状态之间的转换,然后定义单独的状态:

但是这种操作会增加过多的状态对象依赖。那么有没骚操作呢?当然有。我们先来了解了解状态机。

状态机

状态机全称有限状态机,因为一般的状态机的状态都是离散而且可枚举的,这就是有限的原因。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态变化可以被感知。一般包含以下几个概念:

  • 状态 太废话了我,状态机没有状态还能叫状态机。

  • 事件 状态机的状态变更肯定是通过触发一个事件引起的。

  • 行为 触发了之后执行的业务逻辑。比如说订单未支付状态到支付状态的变更需要走的业务,写流水、修改账户余额等。

  • 变更 一个状态被一个事件触发执行了某些行为到达了另外一个状态的过程。

上图就是个变更的过程示意。接下来该说另一个东西java枚举了。

Java中的枚举

一个Java的枚举是一种定义的一类常量列表的特殊类型的类。是JDK 1.5中引入的新特性。 枚举在JDK中其实就是被设计成了单例模式,所以是不允许外部对其进行实例化的,枚举类型的实例化都是在其加载的时候JVM帮我们完成的。这是Java虚拟机规范明确规定的,保证了线程的安全性。由于Java枚举隐式实现了枚举超类java.lang.Enum,因此无法实现另一个类,但是可以实现接口。可以声明抽象方法由具体的内部枚举来实现。我们定义一个颜色枚举来看看:

我们可以通过 Colorful.RED.colorName() 直接拿到颜色的名称,非常方便而且语义化。

接下来我们将结合实际开发场景来实现一个简单枚举类型的状态机来处理业务。

实战操作

订单派送到收货这个场景,我们考虑如下单纯的场景:

经历调度到派送最后到收货这个简单过程,我们可以定义如下状态枚举:

因为调度是初始状态,所以其prevState方法指向自己,因为收货时终止状态所以其nextState指向自己。通过定义这两个指针来进行操作所需要的流程。当然实际生产要结合你自己的业务来做。

然后我们订单流程就可以这样搞(省略getter和setter):

我们来简单测试一下:

经过两次的流转,货物成功到达买家的手中,状态也正确的进行了变更,而且可维护性也得到了保证,只需要变更枚举流程。

到此,相信大家对"java中枚举的介绍和用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

状态 流程 业务 行为 事件 就是 订单 场景 实际 对象 方法 有限 模式 类型 过程 接下来 之间 内容 实例 指向 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库安全知识大全 金蝶专业版数据库删除辅助属性 北京友信互联网络科技有限公司 疾风之刃哪个服务器最多 手机热点网络安全密钥不匹配 关于网络安全的个人演讲稿 最新计算机网络安全法律 hadoop图片服务器 sql2008导出数据库 数据库dba培训 鞍山网络安全培训 当代流行的网络技术有什么 举例说说生活中的数据库操作 软件开发的未来收益 如何找到数据库中的数据透视表 gis书籍 大数据库 网络安全保障工作隐患排查 国家网络安全学院宿舍怎么样 ctf网络安全大赛图片题目 公告网络安全审查 软件开发的所得税减免 梁溪区项目软件开发来电咨询 沧州金诺网络技术公司 集中视频管理服务器 学校网络安全的目标是什么 监控服务器可以上网吗 在事业单位做软件开发好吗 国外校园网络安全研究的现状 安徽新一代软件开发设施有哪些 乌镇互联网大会码隆科技
0