Package org.springframework.core.annotation

# Interface AnnotationFilter

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 AnnotationFilter
Callback interface that can be used to filter specific annotation types.

Note that the `MergedAnnotations` model (which this interface has been designed for) always ignores lang annotations according to the `PLAIN` filter (for efficiency reasons). Any additional filters and even custom filter implementations apply within this boundary and may only narrow further from here.

Since:
  5.2
Author:
  Phillip Webb, Juergen Hoeller
See Also:
  - `MergedAnnotations`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final AnnotationFilter`
`ALL`
`AnnotationFilter` that always matches and can be used when no relevant annotation types are expected to be present at all.
`static final AnnotationFilter`
`JAVA`
`AnnotationFilter` that matches annotations in the `java` and `javax` packages and their subpackages.
`static final AnnotationFilter`
`NONE`
Deprecated.
as of 5.2.6 since the `MergedAnnotations` model always ignores lang annotations according to the `PLAIN` filter (for efficiency reasons)
`static final AnnotationFilter`
`PLAIN`
`AnnotationFilter` that matches annotations in the `java.lang` and `org.springframework.lang` packages and their subpackages.

## Method Summary

Modifier and Type
Method
Description
`default boolean`
`matches(Annotation annotation)`
Test if the given annotation matches the filter.
`default boolean`
`matches(Class<?> type)`
Test if the given type matches the filter.
`boolean`
`matches(String typeName)`
Test if the given type name matches the filter.
`static AnnotationFilter`
`packages(String... packages)`
Create a new `AnnotationFilter` that matches annotations in the specified packages.

## Field Details

### PLAIN

static final AnnotationFilter PLAIN
`AnnotationFilter` that matches annotations in the `java.lang` and `org.springframework.lang` packages and their subpackages.

This is the default filter in the `MergedAnnotations` model.

### JAVA

static final AnnotationFilter JAVA
`AnnotationFilter` that matches annotations in the `java` and `javax` packages and their subpackages.

### ALL

static final AnnotationFilter ALL
`AnnotationFilter` that always matches and can be used when no relevant annotation types are expected to be present at all.

### NONE

@Deprecated static final AnnotationFilter NONE
Deprecated.
as of 5.2.6 since the `MergedAnnotations` model always ignores lang annotations according to the `PLAIN` filter (for efficiency reasons)
`AnnotationFilter` that never matches and can be used when no filtering is needed (allowing for any annotation types to be present).

See Also:
  - `PLAIN`

## Method Details

### matches

default boolean matches(Annotation annotation)
Test if the given annotation matches the filter.

Parameters:
  `annotation` - the annotation to test
Returns:
  `true` if the annotation matches

### matches

default boolean matches(Class<?> type)
Test if the given type matches the filter.

Parameters:
  `type` - the annotation type to test
Returns:
  `true` if the annotation matches

### matches

boolean matches(String typeName)
Test if the given type name matches the filter.

Parameters:
  `typeName` - the fully qualified class name of the annotation type to test
Returns:
  `true` if the annotation matches

### packages

static AnnotationFilter packages(String... packages)
Create a new `AnnotationFilter` that matches annotations in the specified packages.

Parameters:
  `packages` - the annotation packages that should match
Returns:
  a new `AnnotationFilter` instance