Interface RepeatableAnnotationCollector

All Known Implementing Classes:
RepeatableAnnotationCollector.AbstractCollector, RepeatableAnnotationCollector.Condition, RepeatableAnnotationCollector.Full, RepeatableAnnotationCollector.None, RepeatableAnnotationCollector.Standard

public interface RepeatableAnnotationCollector
可重复注解收集器,用于从一个注解获得被它包含的可重复注解
Since:
Java 17+
Author:
Kimi Liu
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    RepeatableAnnotationCollector的基本实现
    static class 
    自定义判断条件的实现,当解析注解属性时,将根据给定的判断条件, 确定该属性中是否含有可重复注解,收集器将返回所有匹配的属性中的可重复注解。
    static class 
    全量实现,当注解中存在有属性为注解数组,且该数组对应的注解类型被Repeatable注解时, 认为该属性包含可重复注解。 收集器将返回所有符合上述条件的属性中的可重复注解。
    static class 
    空实现
    static class 
    标准实现,当注解中有且仅有一个名为value的属性时, 若该属性类型为注解数组,且该数组对应的注解类型被Repeatable注解, 则收集器将返回该属性中包括的可重复注解。
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    清空单例缓存
    当解析注解属性时,将根据给定的判断条件,确定该属性中是否含有可重复注解。 收集器将返回所有匹配的属性中的可重复注解。
    当注解中存在有属性为注解数组,且该数组对应的注解类型被Repeatable注解时, 认为该属性包含可重复注解。 收集器将返回所有符合上述条件的属性中的可重复注解。 eg:
    若一个注解是可重复注解的容器注解,则尝试通过其属性获得获得包含的注解对象。 若包含的注解对象也是可重复注解的容器注解,则继续解析直到获得所有非容器注解为止。 eg: 若存在嵌套关系a -> b -> c,则解析注解a, 将获得全部abc注解。 如果注解不包含可重复注解,则返回a本身。
    若一个注解是可重复注解的容器注解,则尝试通过其属性获得获得包含的注解对象。 若包含的注解对象也是可重复注解的容器注解,则继续解析直到获得所有非容器注解为止。 eg: 若存在嵌套关系a -> b -> c, 则解析注解a,则将得到全部c注解。 如果注解不包含可重复注解,则返回a本身。
    <T extends Annotation>
    List<T>
    getRepeatableAnnotations(Annotation annotation, Class<T> annotationType)
    若一个注解是可重复注解的容器注解,则尝试通过其属性获得获得包含的指定类型注解对象。 eg: 若存在嵌套关系a -> b -> c,则: 解析注解a:可获得abc; 解析注解b:可获得bc; 解析注解c:只可获得c
    空实现
    当注解中有且仅有一个名为value的属性时, 若该属性类型为注解数组,且该数组对应的注解类型被Repeatable注解, 则收集器将返回该属性中包括的可重复注解。 eg:
  • Method Details

    • none

      空实现
      Returns:
      RepeatableAnnotationCollector实例
    • standard

      static RepeatableAnnotationCollector standard()
      当注解中有且仅有一个名为value的属性时, 若该属性类型为注解数组,且该数组对应的注解类型被Repeatable注解, 则收集器将返回该属性中包括的可重复注解。 eg:
      
       // 容器注解
       @interface Annotation {
              Item[] value() default {};
       }
       // 可重复注解
       @Repeatable(Annotation.class)
       @interface Item {}
       
      解析任意Annotation注解对象,则可以获得value属性中的Item注解对象
      Returns:
      RepeatableAnnotationCollector实例
      See Also:
    • condition

      当解析注解属性时,将根据给定的判断条件,确定该属性中是否含有可重复注解。 收集器将返回所有匹配的属性中的可重复注解。
      Parameters:
      predicate - 是否为容纳可重复注解的属性的判断条件
      Returns:
      RepeatableAnnotationCollector实例
    • full

      当注解中存在有属性为注解数组,且该数组对应的注解类型被Repeatable注解时, 认为该属性包含可重复注解。 收集器将返回所有符合上述条件的属性中的可重复注解。 eg:
      
       @interface Annotation {
              Item1[] items1() default {};
              Item2[] items2() default {};
       }
       
      解析任意Annotation注解对象, 则可以获得items1属性中的Item1注解对象, 以及items2属性中的Item2注解对象,
      Returns:
      RepeatableAnnotationCollector实例
    • clearSingletonCaches

      static void clearSingletonCaches()
      清空单例缓存
    • getFinalRepeatableAnnotations

      List<Annotation> getFinalRepeatableAnnotations(Annotation annotation)
      若一个注解是可重复注解的容器注解,则尝试通过其属性获得获得包含的注解对象。 若包含的注解对象也是可重复注解的容器注解,则继续解析直到获得所有非容器注解为止。 eg: 若存在嵌套关系a -> b -> c, 则解析注解a,则将得到全部c注解。 如果注解不包含可重复注解,则返回a本身。
      Parameters:
      annotation - 容器注解
      Returns:
      容器注解中的可重复注解,若annotation不为容器注解,则数组中仅有其本身一个对象
    • getAllRepeatableAnnotations

      List<Annotation> getAllRepeatableAnnotations(Annotation annotation)
      若一个注解是可重复注解的容器注解,则尝试通过其属性获得获得包含的注解对象。 若包含的注解对象也是可重复注解的容器注解,则继续解析直到获得所有非容器注解为止。 eg: 若存在嵌套关系a -> b -> c,则解析注解a, 将获得全部abc注解。 如果注解不包含可重复注解,则返回a本身。
      Parameters:
      annotation - 容器注解
      Returns:
      容器注解中的可重复注解,若annotation不为容器注解,则数组中仅有其本身一个对象
    • getRepeatableAnnotations

      <T extends Annotation> List<T> getRepeatableAnnotations(Annotation annotation, Class<T> annotationType)
      若一个注解是可重复注解的容器注解,则尝试通过其属性获得获得包含的指定类型注解对象。 eg: 若存在嵌套关系a -> b -> c,则:
      • 解析注解a:可获得abc
      • 解析注解b:可获得bc
      • 解析注解c:只可获得c
      Type Parameters:
      T - 注解类型
      Parameters:
      annotation - 容器注解
      annotationType - 注解类型
      Returns:
      容器注解中的可重复注解