Class AnnotationSupport

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.util.List<java.lang.reflect.Method> findAnnotatedMethods​(java.lang.Class<?> clazz, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType, HierarchyTraversalMode traversalMode)
      Find all methods of the supplied class or interface that are annotated or meta-annotated with the specified annotationType.
      static <A extends java.lang.annotation.Annotation>
      java.util.Optional<A>
      findAnnotation​(java.lang.reflect.AnnotatedElement element, java.lang.Class<A> annotationType)
      Find the first annotation of annotationType that is either directly present, meta-present, or indirectly present on the supplied element.
      static <A extends java.lang.annotation.Annotation>
      java.util.Optional<A>
      findAnnotation​(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element, java.lang.Class<A> annotationType)
      Find the first annotation of annotationType that is either present or meta-present on the supplied optional element.
      static java.util.List<java.lang.reflect.Field> findPublicAnnotatedFields​(java.lang.Class<?> clazz, java.lang.Class<?> fieldType, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      Find all public fields of the supplied class or interface that are of the specified fieldType and annotated or meta-annotated with the specified annotationType.
      static <A extends java.lang.annotation.Annotation>
      java.util.List<A>
      findRepeatableAnnotations​(java.lang.reflect.AnnotatedElement element, java.lang.Class<A> annotationType)
      Find all repeatable annotations of annotationType that are either present, indirectly present, or meta-present on the supplied AnnotatedElement.
      static boolean isAnnotated​(java.lang.reflect.AnnotatedElement element, java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      Determine if an annotation of annotationType is either present or meta-present on the supplied element.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • isAnnotated

        public static boolean isAnnotated​(java.lang.reflect.AnnotatedElement element,
                                          java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Determine if an annotation of annotationType is either present or meta-present on the supplied element.
        See Also:
        findAnnotation(AnnotatedElement, Class)
      • findAnnotation

        public static <A extends java.lang.annotation.Annotation> java.util.Optional<A> findAnnotation​(java.util.Optional<? extends java.lang.reflect.AnnotatedElement> element,
                                                                                                       java.lang.Class<A> annotationType)
        Find the first annotation of annotationType that is either present or meta-present on the supplied optional element.
        See Also:
        findAnnotation(AnnotatedElement, Class)
      • findAnnotation

        public static <A extends java.lang.annotation.Annotation> java.util.Optional<A> findAnnotation​(java.lang.reflect.AnnotatedElement element,
                                                                                                       java.lang.Class<A> annotationType)
        Find the first annotation of annotationType that is either directly present, meta-present, or indirectly present on the supplied element.

        If the element is a class and the annotation is neither directly present nor meta-present on the class, this method will additionally search on interfaces implemented by the class before finding an annotation that is indirectly present on the class.

        Returns:
        an Optional containing the annotation; never null but potentially empty
      • findRepeatableAnnotations

        public static <A extends java.lang.annotation.Annotation> java.util.List<A> findRepeatableAnnotations​(java.lang.reflect.AnnotatedElement element,
                                                                                                              java.lang.Class<A> annotationType)
        Find all repeatable annotations of annotationType that are either present, indirectly present, or meta-present on the supplied AnnotatedElement.

        This method extends the functionality of AnnotatedElement.getAnnotationsByType(Class) with additional support for meta-annotations.

        In addition, if the element is a class and the repeatable annotation is @Inherited, this method will search on superclasses first in order to support top-down semantics. The result is that this algorithm finds repeatable annotations that would be shadowed and therefore not visible according to Java's standard semantics for inherited, repeatable annotations, but most developers will naturally assume that all repeatable annotations in JUnit are discovered regardless of whether they are declared stand-alone, in a container, or as a meta-annotation (e.g., multiple declarations of @ExtendWith within a test class hierarchy).

        If the element is a class and the repeatable annotation is not discovered within the class hierarchy, this method will additionally search on interfaces implemented by each class in the hierarchy.

        If the supplied element is null, this method simply returns an empty list.

        Parameters:
        element - the element to search on, potentially null
        annotationType - the repeatable annotation type to search for; never null
        Returns:
        the list of all such annotations found; neither null nor mutable
        See Also:
        Repeatable, Inherited
      • findPublicAnnotatedFields

        public static java.util.List<java.lang.reflect.Field> findPublicAnnotatedFields​(java.lang.Class<?> clazz,
                                                                                        java.lang.Class<?> fieldType,
                                                                                        java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Find all public fields of the supplied class or interface that are of the specified fieldType and annotated or meta-annotated with the specified annotationType.

        Consult the Javadoc for Class.getFields() for details on inheritance and ordering.

        Parameters:
        clazz - the class or interface in which to find the fields; never null
        fieldType - the type of field to find; never null
        annotationType - the annotation type to search for; never null
        Returns:
        the list of all such fields found; neither null nor mutable
        See Also:
        Class.getFields()
      • findAnnotatedMethods

        public static java.util.List<java.lang.reflect.Method> findAnnotatedMethods​(java.lang.Class<?> clazz,
                                                                                    java.lang.Class<? extends java.lang.annotation.Annotation> annotationType,
                                                                                    HierarchyTraversalMode traversalMode)
        Find all methods of the supplied class or interface that are annotated or meta-annotated with the specified annotationType.
        Parameters:
        clazz - the class or interface in which to find the methods; never null
        annotationType - the annotation type to search for; never null
        traversalMode - the hierarchy traversal mode; never null
        Returns:
        the list of all such methods found; neither null nor mutable