在开发的过程中我们经常使用1、2、3、等一些常量去表现一个意思但是在我们返回给前端的时候在前端就需要做很多的判断,显得很麻烦,这个时候就需要一种方法能把我们的常量变成我们想返回的消息这时就不需要在前端有过多的判断。
创建CodeEnum接口: 我们先创建一个接口让它成为你想返回消息的enum的父级
public interface CodeEnum {
Integer getCode();
}
enum类实现该接口:
public enum LeaveStateEnum implements CodeEnum{
APP_ONE_EXAMINE(1,"申请中,等待一级审批"),
APP_TWOE_XAMINE(2,"申请中,等待二级审批"),
APP_THREE_EXAMINE(3,"申请中,等待三级级审批"),
APPLY_PASS(4,"申请通过");
private Integer code;
private String message;
LeaveStateEnum(Integer code,String message){
this.code=code;
this.message=message;
}
}
创建EnumUtil: 这时我们只需要创建一个方法获取运行时类来比较返回相等的对象
public class EnumUtil {
public static <T extends CodeEnum> T getByCode(Integer code, Class<T> enumClass){
for(T each:enumClass.getEnumConstants()){
if(each.getCode().equals(code)){
return each;
}
}
return null;
}
}
在返回给前端的vo对象: 直接调用
@Data
public class StaffLeaveDTO {
/* 请假单(主键). */
private String leaveId;
/* 请假人信息. */
private UserDTO userDTO;
/* 请假条类型. */
private Integer leaveType;
/* 开始时间. */
private Date startTime;
/* 结束时间. */
private Date endTime;
/* 请假时长. */
private Integer leaveDuration;
/*请假原因. */
private String leaveReason;
/* 请假状态. */
private Integer leaveState;
public LeaveStateEnum getLeaveStateEnum(){
return EnumUtil.getByCode(leaveState, LeaveStateEnum.class);
}
public LeaveTypeEnum getLeaveTypeEnum(){
return EnumUtil.getByCode(leaveType, LeaveTypeEnum.class);
}
}
返回给前端后我们只需要获取对象调用getLeaveStateEnum().getMessage().就可以获取常量对应的消息了!