场景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枚举类型虽然基础,但用好了可以大幅提升代码的可读性、安全性和可维护性,是项目中非常实用的优化技巧。

更多推荐