org.springframework.core.annotation

## Enum MergedAnnotations.SearchStrategy

- java.lang.Object
- - java.lang.Enum<MergedAnnotations.SearchStrategy>
  - - org.springframework.core.annotation.MergedAnnotations.SearchStrategy

- All Implemented Interfaces:
    Serializable, Comparable<MergedAnnotations.SearchStrategy>
  Enclosing interface:
    MergedAnnotations

      public static enum MergedAnnotations.SearchStrategy
      extends Enum<MergedAnnotations.SearchStrategy>

  Search strategies supported by `MergedAnnotations.from(AnnotatedElement, SearchStrategy)` and variants of that method.

  Each strategy creates a different set of aggregates that will be combined to create the final `MergedAnnotations`.

- - ### Enum Constant Summary

    Enum Constants
    Enum Constant and Description
    `DIRECT` Find only directly declared annotations, without considering `@Inherited` annotations and without searching superclasses or implemented interfaces.
    `INHERITED_ANNOTATIONS` Find all directly declared annotations as well as any `@Inherited` superclass annotations.
    `SUPERCLASS` Find all directly declared and superclass annotations.
    `TYPE_HIERARCHY` Perform a full search of the entire type hierarchy, including superclasses and implemented interfaces.
    `TYPE_HIERARCHY_AND_ENCLOSING_CLASSES` Perform a full search of the entire type hierarchy on the source and any enclosing classes.

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static MergedAnnotations.SearchStrategy` | `valueOf(String name)` Returns the enum constant of this type with the specified name.
    `static MergedAnnotations.SearchStrategy[]` | `values()` Returns an array containing the constants of this enum type, in the order they are declared.

    - ### Methods inherited from class java.lang.Enum

      `clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Enum Constant Detail

    - #### DIRECT

          public static final MergedAnnotations.SearchStrategy DIRECT

      Find only directly declared annotations, without considering `@Inherited` annotations and without searching superclasses or implemented interfaces.

    - #### INHERITED_ANNOTATIONS

          public static final MergedAnnotations.SearchStrategy INHERITED_ANNOTATIONS

      Find all directly declared annotations as well as any `@Inherited` superclass annotations.

      This strategy is only really useful when used with `Class` types since the `@Inherited` annotation is ignored for all other annotated elements.

      This strategy does not search implemented interfaces.

    - #### SUPERCLASS

          public static final MergedAnnotations.SearchStrategy SUPERCLASS

      Find all directly declared and superclass annotations.

      This strategy is similar to `INHERITED_ANNOTATIONS` except the annotations do not need to be meta-annotated with `@Inherited`.

      This strategy does not search implemented interfaces.

    - #### TYPE_HIERARCHY

          public static final MergedAnnotations.SearchStrategy TYPE_HIERARCHY

      Perform a full search of the entire type hierarchy, including superclasses and implemented interfaces.

      Superclass annotations do not need to be meta-annotated with `@Inherited`.

    - #### TYPE_HIERARCHY_AND_ENCLOSING_CLASSES

          public static final MergedAnnotations.SearchStrategy TYPE_HIERARCHY_AND_ENCLOSING_CLASSES

      Perform a full search of the entire type hierarchy on the source and any enclosing classes.

      This strategy is similar to `TYPE_HIERARCHY` except that enclosing classes are also searched.

      Superclass and enclosing class annotations do not need to be meta-annotated with `@Inherited`.

      When searching a `Method` source, this strategy is identical to `TYPE_HIERARCHY`.

      WARNING: This strategy searches recursively for annotations on the enclosing class for any source type, regardless whether the source type is an inner class, a `static` nested class, or a nested interface. Thus, it may find more annotations than you would expect.

  - ### Method Detail

    - #### values

          public static MergedAnnotations.SearchStrategy[] values()

      Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

          for (MergedAnnotations.SearchStrategy c : MergedAnnotations.SearchStrategy.values())
              System.out.println(c);

      Returns:
        an array containing the constants of this enum type, in the order they are declared

    - #### valueOf

          public static MergedAnnotations.SearchStrategy valueOf(String name)

      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
        `name` - the name of the enum constant to be returned.
      Returns:
        the enum constant with the specified name
      Throws:
        `IllegalArgumentException` - if this enum type has no constant with the specified name
        `NullPointerException` - if the argument is null