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

Java 枚举(Enum)的三种常用场景

枚举是 Java 中用来表示固定常量的类型,能让代码更清晰、更安全。下面介绍三种最常用的枚举使用场景。

一、场景1:表示状态(如订单状态)

 enum OrderStatus {UNPAID("未支付"),PAID("已支付"),SHIPPED("已发货");private final String description;OrderStatus(String description) {this.description = description;}public String getDescription() {return description;}}

用枚举代替数字,代码可读性更强。

二、场景2:策略模式(如支付方式)

每个枚举值可以有自己的行为,避免大量 if-else。

enum OrderStatus {UNPAID("未支付"),PAID("已支付"),SHIPPED("已发货");private final String description;OrderStatus(String description) {this.description = description;}public String getDescription() {return description;}}

三、场景3:统一返回码(接口常用)

前后端约定状态码,规范又好维护

enum ResultCode {SUCCESS(200, "操作成功"),ERROR(500, "系统错误"),NOT_FOUND(404, "资源不存在");private final int code;private final String message;ResultCode(int code, String message) {this.code = code;this.message = message;}public int getCode() {return code;}public String getMessage() {return message;}}

四、完整测试代码

public class EnumTest {//1.订单枚举类enum OrderStatus {UNPAID("未支付"),PAID("已支付"),SHIPPED("已发货");private final String description;OrderStatus(String description) {this.description = description;}public String getDescription() {return description;}}//2.支付方式枚举enum PayStrategy {ALIPAY {@Overridevoid pay(double money) {System.out.println("使用支付宝支付" + money);}},WECHAT {@Overridevoid pay(double money) {System.out.println("使用微信支付" + money);}};abstract void pay(double money);}//3.返回码枚举enum ResultCode {SUCCESS(200, "操作成功"),ERROR(500, "系统错误"),NOT_FOUND(404, "资源不存在");private final int code;private final String message;ResultCode(int code, String message) {this.code = code;this.message = message;}public int getCode() {return code;}public String getMessage() {return message;}}public static void main(String[] args) {// 测试订单状态枚举OrderStatus status = OrderStatus.UNPAID;System.out.println("订单状态: " + status);System.out.println("状态描述: " + status.getDescription());// 测试支付方式枚举PayStrategy alipay = PayStrategy.ALIPAY;alipay.pay(100.50);PayStrategy wechat = PayStrategy.WECHAT;wechat.pay(200.00);// 测试返回码枚举System.out.println("\n=== 返回码测试 ===");ResultCode success = ResultCode.SUCCESS;System.out.println("返回码: " + success.getCode());System.out.println("消息: " + success.getMessage());ResultCode notFound = ResultCode.NOT_FOUND;System.out.println("返回码: " + notFound.getCode());System.out.println("消息: " + notFound.getMessage());}
}

五、总结

  1. 枚举可以表示固定状态,让代码更清晰。
  2. 可以实现策略模式,减少 if-else。
  3. 适合做统一返回码、类型定义等规范场景。
    枚举让代码更规范、更易维护,是 Java 开发中非常实用的语法。
http://www.jsqmd.com/news/655332/

相关文章:

  • Torras MiniMag 移动电源评测:轻薄实用充电快,低至 36 美元值得入手!
  • 2026届必备的十大AI学术方案横评
  • Novatek NT98530BG SoC赋能4K30多光谱相机开发:高性能与低功耗的完美结合
  • **发散创新:基于Python与OpenCV的视频流帧级分析实战**在当前人工智能与计算机视觉飞速发展的背景下,**
  • 30元搞定!用CH9329+Python绕过游戏反作弊,实现云顶之弈24小时自动刷代币(附完整代码)
  • 专业级AMD Ryzen处理器调试工具:SMUDebugTool完整指南
  • 关投强发稿速度快不快?企业级媒体发稿核心交付时效与配套服务标准全解析 - 发稿平台推荐
  • 【环境修复】ESP32编译报错:xtensa-esp32-elf-gcc命令缺失的排查与修复
  • 为什么你的Halcon深度图转换总出错?深度解析real/uint2/byte的底层差异
  • 告别复杂配置!Phi-3-mini轻量模型5分钟快速上手教程
  • 告别低效!用Warp终端+Cursor编辑器+Claude Code,打造你的专属AI编程工作流(附详细配置清单)
  • 从PSF到SFR:一张图看懂相机成像质量评测的底层逻辑
  • 精细结构常数与黄金比例八次幂的数值关联探索(接口研究)
  • 如何快速打造轻量级Windows 11系统:tiny11builder完整指南
  • 3步掌握MIST:科研级显微图像拼接的完整解决方案
  • 【CVPR2024】RepConvNet:重参数化新范式——让经典卷积网络重焕新生
  • 阿里通义Z-Image-GGUF实战:从零到一生成你的第一张AI画作,全程截图指导
  • 盘点口碑好的组织管理系统公司,价格对比与选择建议 - 工业推荐榜
  • 从零开始:DSView开源仪器软件的完整使用指南
  • WindowResizer:免费开源工具帮你强制调整任意窗口尺寸的完整指南
  • (更新至v0.108)Termux从零到一:下载、安装与国内源配置全攻略
  • 告别风扇噪音!FanControl高级配置与AMD显卡兼容性完全指南
  • 选购展览设计公司,北京蜂蚁展览设计是否值得考虑 - myqiye
  • Bilibili视频下载终极指南:如何免费高效批量获取B站高清资源?
  • Windows上的安卓应用革命:APK-Installer如何重新定义跨平台体验
  • 网络新手避坑指南:eNSP模拟ACL和NAT时,这几个配置细节错了全网不通
  • 精细结构常数与黄金比例八次幂差值 \Delta 的数值关联探索
  • UG FANUC四轴后处理输出程序,出现转速或刀号相关报警如何排查?
  • 关投强做软文推广效果好不好:核心资源、交付标准、价格体系与服务保障深度解析 - 发稿平台推荐
  • Python glob模块实战:从基础通配符到递归遍历的完整指南