Interface AnnotationHandler


@Contract public interface AnnotationHandler
This interface defines the contract for annotation handlers and the annotation processing engine. Each annotation handler is registered for a particular annotation type and will be called by the engine when such annotation type is encountered. The AnnotationHandler is a stateless object, no state should be stored, instead users should use the ProcessingContext. Annotation can be defined or processed in random orders on a particular type, however, a particular annotation may need other annotation to be processed before itself in order to be processed successfully. An annotation type can indicate through the getAnnotations() method which annotation types should be processed before itself.

Each implementation of this interface must specify the annotation that it can handle using AnnotationHandlerFor annotation.

Author:
Jerome Dochez
  • Field Details

  • Method Details

    • getAnnotationType

      Class<? extends Annotation> getAnnotationType()
      Returns:
      the annotation type this annotation handler is handling
    • processAnnotation

      Process a particular annotation which type is the same as the one returned by @see getAnnotationType(). All information pertinent to the annotation and its context is encapsulated in the passed AnnotationInfo instance.
      Parameters:
      element - the annotation information
      Returns:
      HandlerProcessingResult
      Throws:
      AnnotationProcessorException
    • getTypeDependencies

      Class<? extends Annotation>[] getTypeDependencies()
      Returns:
      an array of annotation types this annotation handler would require to be processed (if present) before it processes it's own annotation type.