关于enum使用枚举策略的方法之一,通过枚举变量执行相应的方法

使用调度器说明,主要还是轮询获得相应的方法,顺便了解一下调度器的各类api

public enum CronTabExpressionEnum{

    MONTH("month"){
        @Override
        public void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone) {
            triggerBuilder.withSchedule(monthlyOnDayAndHourAndMinute(frequency.getOffset(),frequency.getHour(), frequency.getMinute())
                    .inTimeZone(timeZone));
        }
    },

    WEEK("week"){
        @Override
        public void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone) {
            //Sun: 1, Mon: 2 以此类推
            triggerBuilder.withSchedule(weeklyOnDayAndHourAndMinute(frequency.getOffset(), frequency.getHour(), frequency.getMinute())
                    .inTimeZone(timeZone));
        }
    },

    DAY("day"){
        @Override
        public void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone) {
            triggerBuilder.withSchedule(dailyAtHourAndMinute(frequency.getHour(), frequency.getMinute())
                    .inTimeZone(timeZone));
        }
    },


    public abstract void setScheduler(TriggerBuilder<Trigger> triggerBuilder, FrequencyDTO frequency, TimeZone timeZone);

    @Getter
    public String type;

//通过轮询来获得相应的方法
    public static CronTabExpressionEnum fromValue(String type) {
        return Stream.of(CronTabExpressionEnum.values()).filter(fileType ->
                StringUtils.equals(fileType.getType(), type)
        ).findFirst().get();
    }
}

接下来调用

CronTabExpressionEnum.fromValue("day".toLowerCase()).setScheduler(triggerBuilder, frequency, timeZone);

其实主要通过fromValue方法来轮询枚举,通过type的值得到相应的枚举方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值