校验实体类上的属性,有注解的进行验证判断当前字段是否为空的情况。

对于检测实体类上的属性,有注解的进行验证判断当前字段是否为空的情况。

通过反射方式获取类属性上的注解。

public static <T> void get(Object object,Class<? extends Annotation>... annotations){
    if (annotations.length <0){
        annotations = new Class[]{Length.class, Range.class, NotBlank.class, NotNull.class, NotEmpty.class};
    }
    Field[] declaredFields = object.getClass().getDeclaredFields();
    for (Field declaredField : declaredFields) {
        try {
            Object fileValue = declaredField.get(object);
            List<? extends Annotation> collect = Arrays.stream(annotations).filter(Objects::nonNull).map(age -> {
                if (declaredField.isAnnotationPresent(age)) {
                    return declaredField.getAnnotation(age);
                }
                return null;
            }).filter(Objects::nonNull).collect(Collectors.toList());
            for (Annotation annotation : collect) {
                if (annotation instanceof NotEmpty){
                    NotEmpty notEmpty = (NotEmpty) annotation;
                    if (null == fileValue){
                        throw new BusinessException(notEmpty.message());
                    }
                }
                if (annotation instanceof NotBlank){
                    NotBlank notBlank = (NotBlank) annotation;
                    if (fileValue instanceof List && CollectionUtils.isEmpty((Collection) fileValue){
                        throw new BusinessException(notBlank.message());
                    }
                    if (fileValue instanceof Map && MapUtils.isEmpty((Map) fileValue)){
                        throw new BusinessException(notBlank.message());
                    }
                    if (fileValue instanceof String && StringUtils.isEmpty(fileValue)){
                        throw new BusinessException(notBlank.message());
                    }
                    if (fileValue.getClass().isArray() && Array.getLength(fileValue) <0){
                        throw new BusinessException(notBlank.message());
                    }
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值