枚举是 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());}
}
五、总结
- 枚举可以表示固定状态,让代码更清晰。
- 可以实现策略模式,减少 if-else。
- 适合做统一返回码、类型定义等规范场景。
枚举让代码更规范、更易维护,是 Java 开发中非常实用的语法。
