org.springframework.core.annotation

## Interface MergedAnnotationSelector<A extends Annotation>

- Type Parameters:
    `A` - the annotation type
  Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface MergedAnnotationSelector<A extends Annotation>

  Strategy interface used to select between two `MergedAnnotation` instances.
  Since:
    5.2
  Author:
    Phillip Webb
  See Also:
    `MergedAnnotationSelectors`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default boolean` | `isBestCandidate(MergedAnnotation<A> annotation)` Determine if the existing annotation is known to be the best candidate and any subsequent selections may be skipped.
    `MergedAnnotation<A>` | `select(MergedAnnotation<A> existing, MergedAnnotation<A> candidate)` Select the annotation that should be used.

- - ### Method Detail

    - #### isBestCandidate

          default boolean isBestCandidate(MergedAnnotation<A> annotation)

      Determine if the existing annotation is known to be the best candidate and any subsequent selections may be skipped.
      Parameters:
        `annotation` - the annotation to check
      Returns:
        `true` if the annotation is known to be the best candidate

    - #### select

          MergedAnnotation<A> select(MergedAnnotation<A> existing,
                                     MergedAnnotation<A> candidate)

      Select the annotation that should be used.
      Parameters:
        `existing` - an existing annotation returned from an earlier result
        `candidate` - a candidate annotation that may be better suited
      Returns:
        the most appropriate annotation from the `existing` or `candidate`