场景 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 代码。