Class AnnotationInfo

    • Method Detail

      • 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()
        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.
      • getClassInfo

        public ClassInfo getClassInfo()
        Return the ClassInfo object for the annotation 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.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object