news 2026/6/6 12:34:39

Java 枚举 3 大业务应用场景详解(附完整示例代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 枚举 3 大业务应用场景详解(附完整示例代码)

场景 1:状态 / 类型定义(最常用)

应用说明
用来统一管理业务中固定的状态、分类,替代硬编码魔法数字 / 字符串,避免零散常量,保证业务状态全项目统一。典型:订单状态、商品类型、审核状态。

示例:订单状态枚举

// 订单状态枚举publicenumOrderStatusEnum{PENDING_PAY(0,"待付款"),PAID(1,"已付款"),DELIVERED(2,"已发货"),FINISH(3,"已完成"),CANCEL(4,"已取消");privatefinalIntegercode;privatefinalStringdesc;// 构造器OrderStatusEnum(Integercode,Stringdesc){this.code=code;this.desc=desc;}// getterpublicIntegergetCode(){returncode;}publicStringgetDesc(){returndesc;}// 根据 code 反向查枚举(业务常用:数据库存数字,代码转枚举)publicstaticOrderStatusEnumgetByCode(Integercode){for(OrderStatusEnumstatus:values()){if(status.getCode().equals(code)){returnstatus;}}thrownewIllegalArgumentException("无效订单状态码");}}

使用:数据库存储数字 0/1/2,代码通过枚举解析含义,杜绝手写数字出错。

场景 2:策略模式(消除臃肿 if/else 分支)

应用说明
多分支业务(支付类型、文件解析类型),传统写法多层 if-else if,维护困难;枚举绑定业务策略实现,根据类型直接执行对应逻辑,完全去掉分支判断。

示例:多种支付方式(微信 / 支付宝 / 银行卡)**

定义支付策略接口

publicinterfacePayStrategy{voidpay(LongorderId,BigDecimalmoney);}

各个支付实现类

// 微信支付classWechatPayimplementsPayStrategy{@Overridepublicvoidpay(LongorderId,BigDecimalmoney){System.out.println("调用微信支付,订单:"+orderId+",金额 "+money);}}// 支付宝classAliPayimplementsPayStrategy{@Overridepublicvoidpay(LongorderId,BigDecimalmoney){System.out.println("调用支付宝支付,订单:"+orderId+",金额 "+money);}}

支付类型枚举(绑定对应策略)

publicenumPayTypeEnum{WECHAT(1,"微信支付",newWechatPay()),ALIPAY(2,"支付宝支付",newAliPay());privatefinalIntegercode;privatefinalStringname;privatefinalPayStrategystrategy;PayTypeEnum(Integercode,Stringname,PayStrategystrategy){this.code=code;this.name=name;this.strategy=strategy;}// 直接调用支付逻辑,无任何 ifpublicvoiddoPay(LongorderId,BigDecimalmoney){this.strategy.pay(orderId,money);}// getter 省略}

业务调用

// 传入支付类型编码,直接执行逻辑PayTypeEnum.getByCode(1).doPay(10001L,newBigDecimal("99.9"));

新增支付方式只需要新增枚举项 + 实现类,开闭原则,不用修改原有 if 代码。场景 3:后端接口统一返回码(项目全局规范)

应用说明
后端 REST 接口统一响应编码,规范前后端交互:成功码、参数错误码、业务异常码、系统异常码,全项目统一错误文案,避免前后端码值不一致。

示例:全局响应码枚举

// 统一接口返回码publicenumResultCodeEnum{SUCCESS(200,"请求成功"),PARAM_ERROR(400,"请求参数非法"),UNAUTH(401,"未登录/权限不足"),BUSINESS_FAIL(501,"业务处理失败"),SYS_ERROR(500,"服务器内部异常");privatefinalIntegercode;privatefinalStringmsg;ResultCodeEnum(Integercode,Stringmsg){this.code=code;this.msg=msg;}// getter 省略}

配套通用返回实体(接口统一返回格式)

publicclassResult<T>{privateIntegercode;privateStringmsg;privateTdata;// 快捷成功返回publicstatic<T>Result<T>success(Tdata){Result<T>res=newResult<>();res.setCode(ResultCodeEnum.SUCCESS.getCode());res.setMsg(ResultCodeEnum.SUCCESS.getMsg());res.setData(data);returnres;}// 快捷失败返回publicstatic<T>Result<T>fail(ResultCodeEnumcodeEnum){Result<T>res=newResult<>();res.setCode(codeEnum.getCode());res.setMsg(codeEnum.getMsg());returnres;}}

Controller 使用示例:

@GetMapping("/test")publicResult<String>test(){// 业务异常直接返回固定错误码returnResult.fail(ResultCodeEnum.PARAM_ERROR);}
使用场景核心优势
状态定义约束取值范围,代码可读性强,避免魔法值
策略替换 if代码易扩展,新增类型不用修改原有逻辑
统一返回码前后端协议标准化,全局错误信息统一
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 12:33:07

抖音无水印视频下载神器:3分钟学会保存纯净视频的完整指南

抖音无水印视频下载神器&#xff1a;3分钟学会保存纯净视频的完整指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载&#xff1a;https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 你是否…

作者头像 李华
网站建设 2026/6/6 12:32:49

5步掌握NS-USBLoader:跨平台Switch文件管理终极方案

5步掌握NS-USBLoader&#xff1a;跨平台Switch文件管理终极方案 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/gh_mirrors…

作者头像 李华
网站建设 2026/6/6 12:32:44

智慧树刷课插件:如何通过Chrome扩展实现自动化学习效率提升

智慧树刷课插件&#xff1a;如何通过Chrome扩展实现自动化学习效率提升 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 在当今在线教育蓬勃发展的时代&#xff0c;智慧…

作者头像 李华
网站建设 2026/6/6 12:27:56

TensorFlow Object Detection API 环境配置与踩坑记录

TensorFlow Object Detection API 环境配置与踩坑记录 1. 环境背景 本项目采用 TensorFlow Object Detection API 进行鸟类目标检测训练&#xff0c;使用 SSD-MobileNet 系列模型进行迁移学习。 硬件环境 GPU&#xff1a;NVIDIA A10 2Driver Version&#xff1a;550.67CUDA Ru…

作者头像 李华
网站建设 2026/6/6 12:27:20

从PL/0的符号表到运行时栈:图解一个简单编译器的内存管理核心

从PL/0的符号表到运行时栈&#xff1a;图解一个简单编译器的内存管理核心当我们在键盘上敲下一行代码时&#xff0c;计算机究竟是如何理解并执行这些抽象符号的&#xff1f;这背后隐藏着一套精妙的内存管理机制。PL/0作为教学级编译器的经典实现&#xff0c;其设计清晰地展现了…

作者头像 李华