hhrのblog
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

枚举类型应用场景

写作时间:2026-05-31 17:55:09
  • 场景 1:状态 / 类型定义(最常用)

    用于固定状态、类型、分类,替代常量,更安全、易读。

// 定义订单状态枚举
enum OrderStatus {
// 枚举常量:固定状态
PENDING, // 待付款
PAID, // 已付款
DELIVERED, // 已发货
COMPLETED, // 已完成
CANCELLED // 已取消
}

public class EnumStateDemo {
public static void main(String[] args) {
// 使用枚举
OrderStatus status = OrderStatus.PAID;

// 判断状态
switch (status) {
case PENDING:
System.out.println("订单待付款");
break;
case PAID:
System.out.println("订单已付款");
break;
case DELIVERED:
System.out.println("订单已发货");
break;
case COMPLETED:
System.out.println("订单已完成");
break;
case CANCELLED:
System.out.println("订单已取消");
break;
default:
System.out.println("未知状态");
}
}
}

  1. enum OrderStatus:定义枚举类,存放固定不变的状态值。
  2. 内部 PENDING、PAID 等是枚举实例,全局唯一,不能被随意修改。
  3. 相比普通 static 常量:类型安全、可读性强、防止传入非法值。
  4. 常配合 switch 判断业务状态
  • 场景 2:策略模式(替换大量 if/else)

用枚举实现策略,消除臃肿分支,代码更简洁易维护。

// 支付策略枚举:每个枚举对应一种支付逻辑
enum PayStrategy {
// 微信支付
WECHAT_PAY {
@Override
public void pay(double money) {
System.out.println("微信支付:" + money + " 元");
}
},
// 支付宝支付
ALIPAY {
@Override
public void pay(double money) {
System.out.println("支付宝支付:" + money + " 元");
}
},
// 银行卡支付
BANK_CARD {
@Override
public void pay(double money) {
System.out.println("银行卡支付:" + money + " 元");
}
};

// 抽象支付方法
public abstract void pay(double money);
}

public class EnumStrategyDemo {
public static void main(String[] args) {
PayStrategy strategy = PayStrategy.ALIPAY;
strategy.pay(99.9);
}
}

  1. 枚举中定义抽象方法,每个枚举常量单独实现该方法。
  2. 不同支付方式对应不同业务逻辑,彻底消除臃肿的 if/else。
  3. 新增支付方式只需新增一个枚举实例,符合开闭原则,易维护。
  • 场景 3:统一返回码(后端接口必备)

    统一管理接口响应码、消息,规范后端返回格式。

// 统一接口返回码枚举
enum ResultCode {
SUCCESS(200, "请求成功"),
FAIL(500, "服务器异常"),
PARAM_ERROR(400, "参数错误"),
NO_AUTH(401, "权限不足");

// 成员变量:状态码、提示信息
private final int code;
private final String msg;

// 私有构造方法(枚举构造默认 private)
ResultCode(int code, String msg) {
this.code = code;
this.msg = msg;
}

// getter 方法
public int getCode() {
return code;
}

public String getMsg() {
return msg;
}
}

public class EnumResultDemo {
public static void main(String[] args) {
ResultCode result = ResultCode.SUCCESS;
System.out.println("响应码:" + result.getCode());
System.out.println("提示信息:" + result.getMsg());
}
}

  1. 枚举携带状态码 + 描述信息,统一项目接口返回规范。
  2. 枚举构造方法默认私有,外部无法创建新对象,保证编码统一。
  3. 所有错误码、成功码集中管理,便于前后端对接与后期维护。

‍

avatar

higher

一个普通人。

RECOMMENDED

形式化方法

2026-05-31 17:39:40

prime number

2026-05-31 17:47:29

应用场景---计算一个方法执行了多少秒

2026-05-31 18:03:16