当前位置: 首页 > news >正文

枚举三大应用场景

1.状态/类型定义(最常用)

枚举最经典的用法,用来表示固定、有限的业务状态或类型,比如订单状态、支付方式、用户权限等。

订单状态枚举

public enum OrderStatus { // 枚举实例 CREATED(1, "已创建"), PAID(2, "已支付"), SHIPPED(3, "已发货"), COMPLETED(4, "已完成"), CANCELLED(5, "已取消"); private final int code; private final String desc; // 构造方法 OrderStatus(int code, String desc) { this.code = code; this.desc = desc; } // 状态判断逻辑 public boolean canCancel() { return this == CREATED || this == PAID; } // getter方法 public int getCode() { return code; } public String getDesc() { return desc; } }

2.策略模式(替换大量if/else)

用枚举实现不同分支的业务逻辑,彻底告别冗长的if-elseswitch-case,让代码更简洁易维护。

核心思路

让枚举实现一个业务接口,每个枚举实例重写接口方法,封装自己的逻辑,外部通过枚举实例直接调用即可。

示例:计算器策略枚举

// 定义策略接口 public interface Calculator { double calculate(double a, double b); } // 枚举实现不同策略 public enum Operation implements Calculator { ADD { @Override public double calculate(double a, double b) { return a + b; } }, SUBTRACT { @Override public double calculate(double a, double b) { return a - b; } }, MULTIPLY { @Override public double calculate(double a, double b) { return a * b; } }, DIVIDE { @Override public double calculate(double a, double b) { if (b == 0) throw new ArithmeticException("除数不能为0"); return a / b; } }; } // 使用时:直接通过枚举实例调用,无需if-else public class Test { public static void main(String[] args) { double result = Operation.ADD.calculate(5, 3); System.out.println(result); // 输出8 } }

3.统一返回码(后端接口必备)

后端接口的响应状态码 / 错误码,用枚举统一管理,避免代码中硬编码数字,保证前后端交互的一致性。

示例:响应码枚举

public enum ResponseCode { // 成功 SUCCESS(200, "操作成功"), // 客户端错误 PARAM_ERROR(400, "请求参数错误"), UNAUTHORIZED(401, "未登录,请先登录"), FORBIDDEN(403, "无访问权限"), NOT_FOUND(404, "资源不存在"), // 服务端错误 SERVER_ERROR(500, "服务器内部错误"); private final int code; private final String message; ResponseCode(int code, String message) { this.code = code; this.message = message; } // 快速获取响应信息 public static ResponseCode getByCode(int code) { for (ResponseCode rc : values()) { if (rc.code == code) { return rc; } } return null; } // getter public int getCode() { return code; } public String getMessage() { return message; } }
http://www.jsqmd.com/news/908166/

相关文章:

  • 别再只用BERT做分类了!用SentenceTransformers的5个实战场景(含代码)
  • Elasticsearch聚合分析实战
  • 火箭着陆制导算法:从凸优化到6-DoF控制
  • FreeRTOS性能调优利器:用SystemView揪出任务阻塞和中断延迟的元凶
  • 学习导师:从工具模式到感知模式的整合
  • LogAnalyzer实战:除了看系统日志,我这样用它监控Nginx访问和MySQL慢查询
  • Haskell与TensorFlow:用函数式编程构建安全可靠的AI系统
  • 视频隐写术实战:位置与精度如何决定信息隐藏的成败
  • Java(分支结构)
  • 别再凭感觉选电阻了!手把手教你计算MOSFET驱动电阻的功耗与封装(附Excel计算模板)
  • 魔百盒M401A安装Home Assistant Supervisor实录:我踩过的那些坑与终极解决方案
  • 定点乘法避坑指南:DSP和嵌入式开发中精度丢失与溢出处理的实战经验
  • Web安全实战解析与核心技术落地指南
  • AI赋能客户体验:从智能客服到预测性服务的实战指南
  • 从CoinGecko拆解数据产品架构:工程实践与商业模式深度分析
  • 别再混淆了!用Python的sklearn手把手教你算多分类的Precision、Recall和Accuracy
  • 算法练手题目:Cable master
  • 神仙免费云服务器 - 阿贝云
  • 164-基于Python的甜点销售数据可视化分析系统
  • 2026 夹层锅、蒸汽夹层锅、不锈钢封头、行星炒锅、食品杀菌锅、压力容器反应釜厂家综合榜单:用料、工艺、耐用度多维度行业分析 - 海棠依旧大
  • Gemini实战:用AI写CI/CD脚本,提升研发效能
  • 别再让CPU扛下所有:手把手教你用ethtool配置网卡TSO/GRO,网络性能飙升指南
  • ♪苍穹外卖♪Day2 | 项目日记
  • Hermes Agent 完全使用指南:从安装到多平台部署的全流程教程
  • 战略落地难?试试分拆对
  • 别再让GUI卡死了!用PySide6的QThread+QMutex实现一个带暂停/恢复功能的下载器
  • 自动语音识别技术原理与实战:从MFCC到端到端模型
  • 线性回归假设深度解析:从理论到实践的完整诊断与修正指南
  • 智能文档信息提取:OCR与AI技术融合的实战指南
  • 项目介绍 MATLAB实现基于SVM-LSTM支持向量机(SVM)结合长短期记忆网络(LSTM)进行回归预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我