zoukankan      html  css  js  c++  java
  • Java 自定义注释@interface的用法

    最简单的待校验的注解定义

    @Documented
    @Constraint(validatedBy = ExistBlankByListValidator.class)
    @Target({PARAMETER})
    @Retention(RUNTIME)
    public @interface ExistBlankByList {
        String message() default "{annotation.ExistBlankByList.message}";
    
        Class<?>[] groups() default {};
    
        Class<? extends Payload>[] payload() default {};
    }
    
    public class ExistBlankByListValidator implements ConstraintValidator<ExistBlankByList, List> {
        private String msg = "";
    
        @Override
        public void initialize(ExistBlankByList existBlankByList) {
            msg = existBlankByList.message();
        }
    
        @Override
        public boolean isValid(List value, ConstraintValidatorContext context) {
            if (null == value) {
                return false;
            }
            return value.stream().noneMatch(StringUtils::isEmpty);
        }
    }
    Target值
    public enum ElementType {  
         TYPE, // 指定适用点为 class, interface, enum  
         FIELD, // 指定适用点为 field  
         METHOD, // 指定适用点为 method  
         PARAMETER, // 指定适用点为 method 的 parameter  
         CONSTRUCTOR, // 指定适用点为 constructor  
         LOCAL_VARIABLE, // 指定使用点为 局部变量  
         ANNOTATION_TYPE, //指定适用点为 annotation 类型  
         PACKAGE // 指定适用点为 package  
    } 
    Retention值
    public enum RetentionPolicy {  
         SOURCE, // 编译器处理完Annotation后不存储在class中  
         CLASS, // 编译器把Annotation存储在class中,这是默认值  
         RUNTIME // 编译器把Annotation存储在class中,可以由虚拟机读取,反射需要  
    } 
  • 相关阅读:
    Java 代码块
    Java 方法签名
    Java 中的继承
    Java 中的this关键字
    Java 静态对象 static
    Java报错 -- The public type c must be defined in its own file
    Java 构造方法
    Java 成员变量和局部变量
    Java 对象的创建和使用
    JavaScript单线程和异步机制
  • 原文地址:https://www.cnblogs.com/fqybzhangji/p/10369715.html
Copyright © 2011-2022 走看看