Class ElementValue

java.lang.Object
proguard.util.SimpleProcessable
proguard.classfile.attribute.annotation.ElementValue
All Implemented Interfaces:
Serializable, Processable
Direct Known Subclasses:
AnnotationElementValue, ArrayElementValue, ClassElementValue, ConstantElementValue, EnumConstantElementValue

public abstract class ElementValue extends SimpleProcessable
This abstract class represents an element value that is attached to an annotation or an annotation default. Specific types of element values are subclassed from it.
See Also:
  • Field Details

    • TAG_STRING_CONSTANT

      public static final char TAG_STRING_CONSTANT
      See Also:
    • TAG_ENUM_CONSTANT

      public static final char TAG_ENUM_CONSTANT
      See Also:
    • TAG_CLASS

      public static final char TAG_CLASS
      See Also:
    • TAG_ANNOTATION

      public static final char TAG_ANNOTATION
      See Also:
    • TAG_ARRAY

      public static final char TAG_ARRAY
      See Also:
    • u2elementNameIndex

      public int u2elementNameIndex
      An extra field for the optional element name. It is used in element value pairs of annotations. Otherwise, it is 0.
    • referencedClass

      public Clazz referencedClass
      An extra field pointing to the referenced Clazz object, if applicable. This field is typically filled out by the ClassReferenceInitializer .
    • referencedMethod

      public Method referencedMethod
      An extra field pointing to the referenced Method object, if applicable. This field is typically filled out by the ClassReferenceInitializer .
  • Constructor Details

    • ElementValue

      protected ElementValue()
      Creates an uninitialized ElementValue.
    • ElementValue

      protected ElementValue(int u2elementNameIndex)
      Creates an initialized ElementValue.
  • Method Details

    • getMethodName

      public String getMethodName(Clazz clazz)
      Returns the element name.
    • getTag

      public abstract char getTag()
      Returns the tag of this element value.
    • accept

      public abstract void accept(Clazz clazz, Annotation annotation, ElementValueVisitor elementValueVisitor)
      Accepts the given visitor.
    • referencedMethodAccept

      public void referencedMethodAccept(MemberVisitor memberVisitor)
      Applies the given visitor to the referenced method.