泛型

import org.apache.commons.lang3.StringUtils;

/**
 * 配值较验器 
 * 
 * 提供对值进行较验的api,并根据较验结果取值且返回
 *
 */
public class ValueValidator {
    
    /**
     * 对目标值进行校验,并根据校验结果取值
     * <br>使用示例(校验目标值是否大于0, 如果小于 0 则取值为 1)
     * <br>ValueValidator.checkAndGet(-1, 1, Validator.INTEGER_GT_ZERO_VALIDATOR)</br>
     * @param value 校验值
     * @param defaultValue 校验失败默认值
     * @param v 校验器
     * @return 经Validator校验后的返回值,校验成功返回 value, 校验失败返回 defaultValue
     */
    public static <T> T checkAndGet(T value, T defaultValue, Validator<T> v) {
        if (v.validate(value)) {
            return value;
        }

        return defaultValue;
    }

    /**
     * 对Properties值进行规则匹配的验证器
     */
    public interface Validator<T> {
        
        /**
         * 校验器: 数值配置不为null, 且大于0较验
         */
        Validator<Integer> INTEGER_GT_ZERO_VALIDATOR = new Validator<Integer>() {
            @Override
            public boolean validate(Integer value) {
                return (value != null && value > 0);
            }
        };

        /**
         * 校验器: 字符串不为空串较验
         */
        Validator<String> STRING_EMPTY_VALUE_VALIDATOR = new Validator<String>() {
            @Override
            public boolean validate(String value) {
                return StringUtils.isNotEmpty(value);
            }
        };

        /**
         * 校验器: BOOL字符串较验
         */
        Validator<String> STRICT_BOOL_VALUE_VALIDATOR = new Validator<String>() {
            @Override
            public boolean validate(String value) {
                return "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
            }
        };
        
        /**
         * 值规则匹配方法实现
         */
        boolean validate(T value);

    }
}



        TassertThat(ValueValidator.checkAndGet(-1, 1, Validator.INTEGER_GT_ZERO_VALIDATOR)).isEqualTo(1);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。