Class ResolvableAnnotationValueVisitor

  • All Implemented Interfaces:
    javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>

    public class ResolvableAnnotationValueVisitor
    extends javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
    A visitor for resolving annotation values into their corresponding runtime representations.

    This class extends SimpleAnnotationValueVisitor6 to process annotation values and convert them into appropriate Java objects such as primitives, strings, enums, classes, annotations, and arrays.

    Example Usage

    
     // Create an instance with default settings
     ResolvableAnnotationValueVisitor visitor = new ResolvableAnnotationValueVisitor();
    
     // Visit an annotation value
     AnnotationValue annotationValue = ...; // Obtain from an annotation mirror
     Object resolvedValue = annotationValue.accept(visitor, executableElement);
     

    Custom behavior examples

    
     // Create an instance that represents Class values as strings
     ResolvableAnnotationValueVisitor visitor = new ResolvableAnnotationValueVisitor(true);
    
     // Create an instance that handles nested annotations as maps
     ResolvableAnnotationValueVisitor visitor = new ResolvableAnnotationValueVisitor(false, true);
     
    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    AnnotationValueVisitor
    • Field Summary

      • Fields inherited from class javax.lang.model.util.SimpleAnnotationValueVisitor6

        DEFAULT_VALUE
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object visitAnnotation​(javax.lang.model.element.AnnotationMirror a, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitArray​(java.util.List<? extends javax.lang.model.element.AnnotationValue> values, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitBoolean​(boolean b, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitByte​(byte b, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitChar​(char c, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitDouble​(double d, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitEnumConstant​(javax.lang.model.element.VariableElement c, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitFloat​(float f, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitInt​(int i, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitLong​(long i, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitShort​(short s, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitString​(java.lang.String s, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitType​(javax.lang.model.type.TypeMirror t, javax.lang.model.element.ExecutableElement attributeMethod)  
      java.lang.Object visitUnknown​(javax.lang.model.element.AnnotationValue av, javax.lang.model.element.ExecutableElement attributeMethod)  
      • Methods inherited from class javax.lang.model.util.SimpleAnnotationValueVisitor6

        defaultAction
      • Methods inherited from class javax.lang.model.util.AbstractAnnotationValueVisitor6

        visit, visit
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ResolvableAnnotationValueVisitor

        public ResolvableAnnotationValueVisitor()
      • ResolvableAnnotationValueVisitor

        public ResolvableAnnotationValueVisitor​(boolean classValuesAsString)
      • ResolvableAnnotationValueVisitor

        public ResolvableAnnotationValueVisitor​(boolean classValuesAsString,
                                                boolean nestedAnnotationsAsMap)
    • Method Detail

      • visitBoolean

        public java.lang.Object visitBoolean​(boolean b,
                                             javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitBoolean in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitBoolean in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitByte

        public java.lang.Object visitByte​(byte b,
                                          javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitByte in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitByte in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitChar

        public java.lang.Object visitChar​(char c,
                                          javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitChar in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitChar in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitDouble

        public java.lang.Object visitDouble​(double d,
                                            javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitDouble in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitDouble in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitFloat

        public java.lang.Object visitFloat​(float f,
                                           javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitFloat in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitFloat in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitInt

        public java.lang.Object visitInt​(int i,
                                         javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitInt in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitInt in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitLong

        public java.lang.Object visitLong​(long i,
                                          javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitLong in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitLong in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitShort

        public java.lang.Object visitShort​(short s,
                                           javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitShort in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitShort in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitString

        public java.lang.Object visitString​(java.lang.String s,
                                            javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitString in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitString in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitType

        public java.lang.Object visitType​(javax.lang.model.type.TypeMirror t,
                                          javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitType in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitType in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitEnumConstant

        public java.lang.Object visitEnumConstant​(javax.lang.model.element.VariableElement c,
                                                  javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitEnumConstant in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitEnumConstant in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitAnnotation

        public java.lang.Object visitAnnotation​(javax.lang.model.element.AnnotationMirror a,
                                                javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitAnnotation in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitAnnotation in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitArray

        public java.lang.Object visitArray​(java.util.List<? extends javax.lang.model.element.AnnotationValue> values,
                                           javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitArray in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitArray in class javax.lang.model.util.SimpleAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>
      • visitUnknown

        public java.lang.Object visitUnknown​(javax.lang.model.element.AnnotationValue av,
                                             javax.lang.model.element.ExecutableElement attributeMethod)
        Specified by:
        visitUnknown in interface javax.lang.model.element.AnnotationValueVisitor<java.lang.Object,​javax.lang.model.element.ExecutableElement>
        Overrides:
        visitUnknown in class javax.lang.model.util.AbstractAnnotationValueVisitor6<java.lang.Object,​javax.lang.model.element.ExecutableElement>