Java枚举的三大应用场景,告别魔法值和if-else
Java枚举的三大应用场景告别魔法值和if-else引言很多新手用int常量表示状态如0未支付1已支付问题很明显类型不安全能传999可读性差看不懂1代表什么难以维护枚举Enum 能完美解决这些问题。场景一状态/类型定义最常用public enum OrderStatus { PENDING, // 待支付 PAID, // 已支付 SHIPPED, // 已发货 COMPLETED // 已完成 } // 使用 OrderStatus status OrderStatus.PAID; switch(status) { case PENDING: break; case PAID: break; // ... }场景二策略模式替换if-else让每个枚举值实现自己的业务逻辑。public enum Calculator { ADD { public int apply(int a,int b){ return ab; } }, SUB { public int apply(int a,int b){ return a-b; } }; public abstract int apply(int a,int b); } // 使用Calculator.ADD.apply(10,5) 得到15场景三统一返回码后端接口必备给枚举绑定属性和方法。public enum ResultCode { SUCCESS(200,成功), NOT_FOUND(404,资源不存在); private int code; private String msg; ResultCode(int code,String msg){ this.codecode; this.msgmsg; } public int getCode(){ return code; } public String getMsg(){ return msg; } }总结优势说明类型安全编译期检查传不了无效值可读性高代码里看到的是状态名不是数字可附加行为能写方法、绑属性、实现抽象方法