前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 入参枚举类型,自定义注解

java 入参枚举类型,自定义注解

原创
作者头像
时光_赌徒
修改2023-11-16 16:52:36
2270
修改2023-11-16 16:52:36
举报
文章被收录于专栏:记录记录

//定义注解

代码语言:txt
复制
import java.lang.annotation.Documented;

import java.lang.annotation.Retention;

import java.lang.annotation.Target;

import javax.validation.Constraint;

import javax.validation.Payload;

import static java.lang.annotation.ElementType.ANNOTATION\_TYPE;

import static java.lang.annotation.ElementType.CONSTRUCTOR;

import static java.lang.annotation.ElementType.FIELD;

import static java.lang.annotation.ElementType.METHOD;

import static java.lang.annotation.ElementType.PARAMETER;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Target({METHOD, FIELD, ANNOTATION\_TYPE, CONSTRUCTOR, PARAMETER})

@Retention(RUNTIME)

@Documented

@Constraint(validatedBy = {EnumValueValidator.class})

public @interface EnumValueValidate {


// 默认错误消息
String message() default "必须为指定值";


String[] strValues() default {};


int[] intValues() default {};


// 分组
Class<?>[] groups() default {};

// 负载
Class<? extends Payload>[] payload() default {};

// 指定多个时使用
@Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Documented
@interface List {
    EnumValueValidate[] value();
    }
}
-----------------
//校验信息

public class EnumValueValidator implements ConstraintValidator<EnumValueValidate, Object> {

private String[] strValues;

private int[] intValues;

@Override

public void initialize(EnumValueValidate constraintAnnotation) {

    strValues = constraintAnnotation.strValues();

    intValues = constraintAnnotation.intValues();

}

@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
    if (value == null) {
        //空的时候不校验,非空校验配合@NotNull或者@NotBlank使用
        return true;
    }
    if (value instanceof String) {
        for (String s : strValues) {
            if (s.equals(value)) {
                return true;
            }
        }
    } else if (value instanceof Integer) {
        for (int s : intValues) {

            if (s == ((Integer) value).intValue()) {

                return true;

            }

        }

    }

    return false;

}


}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档