Java枚举类型应用场景解析
场景1:状态/类型定义
用于表示固定有限的状态集合,比如订单状态、用户角色、支付类型等,替代零散的常量定义,实现类型安全。
public enum OrderStatus {
WAIT_PAY("待支付", 1),
PAID("已支付", 2),
DELIVERED("已发货", 3),
FINISHED("已完成", 4),
CANCELLED("已取消", 5);
private final String desc;
private final int code;
OrderStatus(String desc, int code) {
this.desc = desc;
this.code = code;
}
public String getDesc() { return desc; }
public int getCode() { return code; }
}
场景2:策略模式(替换大量if/else)
把不同分支的业务逻辑封装到枚举常量中,用枚举实例直接调用方法,避免代码中出现冗长的条件判断。
public enum PayStrategy {
ALIPAY {
@Override
public void pay(double amount) {
System.out.println("调用支付宝支付:" + amount + "元");
}
},
WECHAT_PAY {
@Override
public void pay(double amount) {
System.out.println("调用微信支付:" + amount + "元");
}
},
UNION_PAY {
@Override
public void pay(double amount) {
System.out.println("调用银联支付:" + amount + "元");
}
};
public abstract void pay(double amount);
}
// 使用方式:直接调用对应策略,无需if/else
PayStrategy.ALIPAY.pay(99.9);
场景3:统一返回码(后端接口必备)
定义全局的响应状态码和描述,保证项目中所有接口的返回格式统一,便于前端处理和维护。
public enum ResultCode {
SUCCESS(200, "请求成功"),
PARAM_ERROR(400, "参数校验失败"),
NO_AUTH(401, "未授权,请登录"),
FORBIDDEN(403, "无访问权限"),
NOT_FOUND(404, "资源不存在"),
SERVER_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; }
}
心得:
Java枚举类型虽然基础,但用好了可以大幅提升代码的可读性、安全性和可维护性,是项目中非常实用的优化技巧。
更多推荐


所有评论(0)