Class AnnotationInfo

java.lang.Object
io.github.classgraph.ScanResultObject
io.github.classgraph.AnnotationInfo
All Implemented Interfaces:
HasName, Comparable<AnnotationInfo>

public class AnnotationInfo extends ScanResultObject implements Comparable<AnnotationInfo>, HasName
Holds metadata about a specific annotation instance on a class, method, method parameter or field.
  • Field Details

    • name

      private String name
      The name.
    • annotationParamValues

      private AnnotationParameterValueList annotationParamValues
      The annotation param values.
    • annotationParamValuesHasBeenConvertedToPrimitive

      private transient boolean annotationParamValuesHasBeenConvertedToPrimitive
      Set to true once any Object[] arrays of boxed types in annotationParamValues have been lazily converted to primitive arrays.
    • annotationParamValuesWithDefaults

      private transient AnnotationParameterValueList annotationParamValuesWithDefaults
      The annotation param values with defaults.
  • Constructor Details

    • AnnotationInfo

      AnnotationInfo()
      Default constructor for deserialization.
    • AnnotationInfo

      AnnotationInfo(String name, AnnotationParameterValueList annotationParamValues)
      Constructor.
      Parameters:
      name - The name of the annotation.
      annotationParamValues - The annotation parameter values, or null if none.
  • Method Details

    • getName

      public String getName()
      Get the name.
      Specified by:
      getName in interface HasName
      Returns:
      The name of the annotation class.
    • isInherited

      public boolean isInherited()
      Checks if the annotation is inherited.
      Returns:
      true if this annotation is meta-annotated with Inherited.
    • getDefaultParameterValues

      public AnnotationParameterValueList getDefaultParameterValues()
      Get the default parameter values.
      Returns:
      the list of default parameter values for this annotation, or the empty list if none.
    • getParameterValues

      public AnnotationParameterValueList getParameterValues(boolean includeDefaultValues)
      Get the parameter values.
      Parameters:
      includeDefaultValues - if true, include default values for any annotation parameter value that is missing.
      Returns:
      The parameter values of this annotation, including any default parameter values inherited from the annotation class definition (if requested), or the empty list if none.
    • getParameterValues

      public AnnotationParameterValueList getParameterValues()
      Get the parameter values.
      Returns:
      The parameter values of this annotation, including any default parameter values inherited from the annotation class definition, or the empty list if none.
    • getClassName

      protected String getClassName()
      Get the name of the annotation class, for getClassInfo().
      Specified by:
      getClassName in class ScanResultObject
      Returns:
      the class name
    • setScanResult

      void setScanResult(ScanResult scanResult)
      Description copied from class: ScanResultObject
      Set ScanResult backreferences in info objects after scan has completed.
      Overrides:
      setScanResult in class ScanResultObject
      Parameters:
      scanResult - the scan result
    • findReferencedClassInfo

      protected void findReferencedClassInfo(Map<String,ClassInfo> classNameToClassInfo, Set<ClassInfo> refdClassInfo, LogNode log)
      Get ClassInfo objects for any classes referenced in the type descriptor or type signature.
      Overrides:
      findReferencedClassInfo in class ScanResultObject
      Parameters:
      classNameToClassInfo - the map from class name to ClassInfo.
      refdClassInfo - the referenced class info
      log - the log
    • getClassInfo

      public ClassInfo getClassInfo()
      Return the ClassInfo object for the annotation class.
      Overrides:
      getClassInfo in class ScanResultObject
      Returns:
      The ClassInfo object for the referenced class.
    • loadClassAndInstantiate

      public Annotation loadClassAndInstantiate()
      Load the Annotation class corresponding to this AnnotationInfo object, by calling getClassInfo().loadClass(), then create a new instance of the annotation, with the annotation parameter values obtained from this AnnotationInfo object, possibly overriding default annotation parameter values obtained from calling getClassInfo() then ClassInfo.getAnnotationDefaultParameterValues().

      Note that the returned Annotation will have some sort of InvocationHandler proxy type, such as io.github.classgraph.features.$Proxy4 or com.sun.proxy.$Proxy6. This is an unavoidable side effect of the fact that concrete Annotation instances cannot be instantiated directly. (ClassGraph uses the same approach that the JDK uses to instantiate annotations from a map.) However, proxy instances are handled specially when it comes to casting and instanceof: you are able to cast the returned proxy instance to the annotation type, and instanceof checks against the annotation class will succeed.

      Of course another option you have for getting the concrete annotations, rather than instantiating the annotations on a ClassInfo object via this method, is to call ClassInfo.loadClass(), and read the annotations directly from the returned Class object.

      Returns:
      The new Annotation instance, as a dynamic proxy object that can be cast to the expected annotation type.
    • convertWrapperArraysToPrimitiveArrays

      void convertWrapperArraysToPrimitiveArrays()
      Convert wrapper arrays to primitive arrays.
    • compareTo

      public int compareTo(AnnotationInfo o)
      Specified by:
      compareTo in interface Comparable<AnnotationInfo>
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      protected void toString(boolean useSimpleNames, StringBuilder buf)
      Description copied from class: ScanResultObject
      Render to string.
      Specified by:
      toString in class ScanResultObject
      Parameters:
      useSimpleNames - if true, use just the simple name of each class.
      buf - the buf