使用java枚举类,做参数校验

157 阅读1分钟

需求:对任务入参做参数校验 全量任务参数校验:无校验 增量任务参数校验:开始时间和结束时间必须传值 指定id任务参数校验:任务id必须有值 使用枚举类对参数做校验

public class JobParam {

    private String jobType;
    private Long jobId;
    private Date startTime;
    private Date endTime;

    // 省略构造函数、getter和setter
}
public enum JobTypeEnum {

    // 增量定时任务
    INCREMENTAL("INCREMENTAL") {
        @Override
        public void checkParam(JobParam params) throws Exception {
            if (params.getStartTime() == null || params.getEndTime() == null) {
                throw new Exception("开始时间和结束时间必须传值");
            }
        }
    },
    // 全量定时任务
    FULL("FULL") {
        @Override
        public void checkParam(JobParam params) throws Exception {
            return;
        }
    },
    // 指定任务ID定时任务
    SPECIFIC_ID("SPECIFIC_ID")  {
        @Override
        public void checkParam(JobParam params) throws Exception {
            if (params.getJobId() == null) {
                throw new Exception("任务ID不能为空");
            }
        }
    };

    private String jobType;

    JobTypeEnum(String jobType) {
        this.jobType=jobType;
    }

    private static final Map<String, JobTypeEnum> jobTypeMap = new HashMap<>();

    static {
        for (JobTypeEnum enumValue : JobTypeEnum.values()) {
            jobTypeMap.put(enumValue.jobType, enumValue);
        }
    }

    public static JobTypeEnum getEnum(String jobType) {
        return jobTypeMap.get(jobType);
    }
    
    public abstract void checkParam(JobParam params) throws Exception;
}
public static void main(String[] args) {
    JobParam params = new JobParam();
    params.setJobType("SPECIFIC_ID");
    JobTypeEnum jobType = JobTypeEnum.getEnum(params.getJobType());

    try {
        jobType.checkParam(params);
        System.out.println("参数校验通过");
        // 进行后续操作
    } catch (Exception e) {
        System.out.println("参数校验失败: " + e.getMessage());
        // 处理参数校验失败的情况
    }
}