Package org.springframework.core.annotation

# Class MergedAnnotationPredicates

java.lang.Object
org.springframework.core.annotation.MergedAnnotationPredicates

public abstract class MergedAnnotationPredicates extends Object
Predicate implementations that provide various test operations for `MergedAnnotations`.

Since:
  5.2
Author:
  Phillip Webb

## Method Summary

Modifier and Type
Method
Description
`static <A extends Annotation>
Predicate<MergedAnnotation<A>>`
`firstRunOf(Function<? super MergedAnnotation<A>,?> valueExtractor)`
Create a new stateful, single use `Predicate` that matches only the first run of an extracted value.
`static <A extends Annotation>
Predicate<MergedAnnotation<? extends A>>`
`typeIn(Class<?>... types)`
Create a new `Predicate` that evaluates to `true` if the merged annotation type is contained in the specified array.
`static <A extends Annotation>
Predicate<MergedAnnotation<? extends A>>`
`typeIn(String... typeNames)`
Create a new `Predicate` that evaluates to `true` if the name of the merged annotation type is contained in the specified array.
`static <A extends Annotation>
Predicate<MergedAnnotation<? extends A>>`
`typeIn(Collection<?> types)`
Create a new `Predicate` that evaluates to `true` if the merged annotation type is contained in the specified collection.
`static <A extends Annotation, K>
Predicate<MergedAnnotation<A>>`
`unique(Function<? super MergedAnnotation<A>,K> keyExtractor)`
Create a new stateful, single use `Predicate` that matches annotations that are unique based on the extracted key.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### typeIn

public static <A extends Annotation> Predicate<MergedAnnotation<? extends A>> typeIn(String... typeNames)
Create a new `Predicate` that evaluates to `true` if the name of the merged annotation type is contained in the specified array.

Type Parameters:
  `A` - the annotation type
Parameters:
  `typeNames` - the names that should be matched
Returns:
  a `Predicate` to test the annotation type

### typeIn

public static <A extends Annotation> Predicate<MergedAnnotation<? extends A>> typeIn(Class<?>... types)
Create a new `Predicate` that evaluates to `true` if the merged annotation type is contained in the specified array.

Type Parameters:
  `A` - the annotation type
Parameters:
  `types` - the types that should be matched
Returns:
  a `Predicate` to test the annotation type

### typeIn

public static <A extends Annotation> Predicate<MergedAnnotation<? extends A>> typeIn(Collection<?> types)
Create a new `Predicate` that evaluates to `true` if the merged annotation type is contained in the specified collection.

Type Parameters:
  `A` - the annotation type
Parameters:
  `types` - the type names or classes that should be matched
Returns:
  a `Predicate` to test the annotation type

### firstRunOf

public static <A extends Annotation> Predicate<MergedAnnotation<A>> firstRunOf(Function<? super MergedAnnotation<A>,?> valueExtractor)
Create a new stateful, single use `Predicate` that matches only the first run of an extracted value. For example, `MergedAnnotationPredicates.firstRunOf(MergedAnnotation::distance)` will match the first annotation, and any subsequent runs that have the same distance.

NOTE: This predicate only matches the first run. Once the extracted value changes, the predicate always returns `false`. For example, if you have a set of annotations with distances `[1, 1, 2, 1]` then only the first two will match.

Parameters:
  `valueExtractor` - function used to extract the value to check
Returns:
  a `Predicate` that matches the first run of the extracted values

### unique

public static <A extends Annotation, K> Predicate<MergedAnnotation<A>> unique(Function<? super MergedAnnotation<A>,K> keyExtractor)
Create a new stateful, single use `Predicate` that matches annotations that are unique based on the extracted key. For example `MergedAnnotationPredicates.unique(MergedAnnotation::getType)` will match the first time a unique type is encountered.

Parameters:
  `keyExtractor` - function used to extract the key used to test for uniqueness
Returns:
  a `Predicate` that matches a unique annotation based on the extracted key