Class AnnotationInfo

  • All Implemented Interfaces:
    HasName, java.lang.Comparable<AnnotationInfo>

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

      • scanResult

        protected transient ScanResult scanResult
        The scan result.
    • Method Detail

      • getName

        public java.lang.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()
        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 java.lang.String getClassName()
        Get the name of the annotation class, for getClassInfo().
        Returns:
        the class name
      • getClassInfo

        public ClassInfo getClassInfo()
        Get the class info.
        Returns:
        The ClassInfo object for the annotation class.
      • loadClassAndInstantiate

        public java.lang.annotation.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.
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object