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

用枚举定义订单状态、用户角色、支付方式等,避免魔法数字和字符串。

1
2
3
4
5
6
public enum OrderStatus {
PENDING, // 待处理
SHIPPED, // 已发货
DELIVERED, // 已签收
CANCELLED // 已取消
}

优点:类型安全,IDE 自动补全,重构方便。

使用示例:

1
2
3
4
5
6
7
public class Order {
private OrderStatus status;

public void setStatus(OrderStatus status) {
this.status = status;
}
}

场景 2:策略模式(替换大量 if/else)
用枚举实现策略模式,每个枚举值代表一种计算方式或处理逻辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public enum Operation {
ADD {
@Override
public double apply(double x, double y) {
return x + y;
}
},
SUB {
@Override
public double apply(double x, double y) {
return x - y;
}
},
MUL {
@Override
public double apply(double x, double y) {
return x * y;
}
};

public abstract double apply(double x, double y);
}

使用示例:

double result = Operation.ADD.apply(10, 5); // 15.0
新增策略只需添加枚举项,无需改动原有代码。
场景 3:统一返回码(后端接口必备)
定义规范的状态码和消息,替代散落在各处的 “200”、”500” 等硬编码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public enum ResultCode {
SUCCESS(200, "操作成功"),
BAD_REQUEST(400, "请求参数错误"),
UNAUTHORIZED(401, "未登录或 token 失效"),
FORBIDDEN(403, "无权限访问"),
NOT_FOUND(404, "资源不存在"),
ERROR(500, "服务器内部错误");

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; }
}

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class ApiResult<T> {
private int code;
private String message;
private T data;

public static <T> ApiResult<T> success(T data) {
ApiResult<T> result = new ApiResult<>();
result.code = ResultCode.SUCCESS.getCode();
result.message = ResultCode.SUCCESS.getMessage();
result.data = data;
return result;
}
}

总结

场景 枚举用法 替代传统方式
状态定义 简单枚举常量 常量类或魔法值
策略模式 枚举+抽象方法 冗长的 if/else
统一返回码 枚举携带字段 散落的硬编码
枚举让代码更简洁、类型更安全、重构更轻松。掌握这三个场景,你就能在后端开发中写出更优雅的 Java 代码。