org.objectweb.asm.tree

## Class AnnotationNode

- java.lang.Object
- - org.objectweb.asm.AnnotationVisitor
  - - org.objectweb.asm.tree.AnnotationNode

- Direct Known Subclasses:
    TypeAnnotationNode

      public class AnnotationNode
      extends AnnotationVisitor

  A node that represents an annotationn.
  Author:
    Eric Bruneton

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `String` | `desc` The class descriptor of the annotation class.
    `List<Object>` | `values` The name value pairs of this annotation.

    - ### Fields inherited from class org.objectweb.asm.AnnotationVisitor

      `api, av`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AnnotationNode(int api, String desc)` Constructs a new `AnnotationNode`.
    `AnnotationNode(String desc)` Constructs a new `AnnotationNode`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `accept(AnnotationVisitor av)` Makes the given visitor visit this annotation.
    `void` | `check(int api)` Checks that this annotation node is compatible with the given ASM API version.
    `void` | `visit(String name, Object value)` Visits a primitive value of the annotation.
    `AnnotationVisitor` | `visitAnnotation(String name, String desc)` Visits a nested annotation value of the annotation.
    `AnnotationVisitor` | `visitArray(String name)` Visits an array value of the annotation.
    `void` | `visitEnd()` Visits the end of the annotation.
    `void` | `visitEnum(String name, String desc, String value)` Visits an enumeration value of the annotation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### desc

          public String desc

      The class descriptor of the annotation class.

    - #### values

          public List<Object> values

      The name value pairs of this annotation. Each name value pair is stored as two consecutive elements in the list. The name is a `String`, and the value may be a `Byte`, `Boolean`, `Character`, `Short`, `Integer`, `Long`, `Float`, `Double`, `String` or `Type`, or an two elements String array (for enumeration values), a `AnnotationNode`, or a `List` of values of one of the preceding types. The list may be `null` if there is no name value pair.

  - ### Constructor Detail

    - #### AnnotationNode

          public AnnotationNode(String desc)

      Constructs a new `AnnotationNode`. Subclasses must not use this constructor. Instead, they must use the `AnnotationNode(int, String)` version.
      Parameters:
        `desc` - the class descriptor of the annotation class.
      Throws:
        `IllegalStateException` - If a subclass calls this constructor.

    - #### AnnotationNode

          public AnnotationNode(int api,
                                String desc)

      Constructs a new `AnnotationNode`.
      Parameters:
        `api` - the ASM API version implemented by this visitor. Must be one of `Opcodes.ASM4` or `Opcodes.ASM5`.
        `desc` - the class descriptor of the annotation class.

  - ### Method Detail

    - #### visit

          public void visit(String name,
                            Object value)

      Description copied from class: `AnnotationVisitor`
      Visits a primitive value of the annotation.
      Overrides:
        `visit` in class `AnnotationVisitor`
      Parameters:
        `name` - the value name.
        `value` - the actual value, whose type must be `Byte`, `Boolean`, `Character`, `Short`, `Integer` , `Long`, `Float`, `Double`, `String` or `Type` or OBJECT or ARRAY sort. This value can also be an array of byte, boolean, short, char, int, long, float or double values (this is equivalent to using `visitArray` and visiting each array element in turn, but is more convenient).

    - #### visitEnum

          public void visitEnum(String name,
                                String desc,
                                String value)

      Description copied from class: `AnnotationVisitor`
      Visits an enumeration value of the annotation.
      Overrides:
        `visitEnum` in class `AnnotationVisitor`
      Parameters:
        `name` - the value name.
        `desc` - the class descriptor of the enumeration class.
        `value` - the actual enumeration value.

    - #### visitAnnotation

          public AnnotationVisitor visitAnnotation(String name,
                                                   String desc)

      Description copied from class: `AnnotationVisitor`
      Visits a nested annotation value of the annotation.
      Overrides:
        `visitAnnotation` in class `AnnotationVisitor`
      Parameters:
        `name` - the value name.
        `desc` - the class descriptor of the nested annotation class.
      Returns:
        a visitor to visit the actual nested annotation value, or `null` if this visitor is not interested in visiting this nested annotation. The nested annotation value must be fully visited before calling other methods on this annotation visitor.

    - #### visitArray

          public AnnotationVisitor visitArray(String name)

      Description copied from class: `AnnotationVisitor`
      Visits an array value of the annotation. Note that arrays of primitive types (such as byte, boolean, short, char, int, long, float or double) can be passed as value to `visit`. This is what `ClassReader` does.
      Overrides:
        `visitArray` in class `AnnotationVisitor`
      Parameters:
        `name` - the value name.
      Returns:
        a visitor to visit the actual array value elements, or `null` if this visitor is not interested in visiting these values. The 'name' parameters passed to the methods of this visitor are ignored. All the array values must be visited before calling other methods on this annotation visitor.

    - #### visitEnd

          public void visitEnd()

      Description copied from class: `AnnotationVisitor`
      Visits the end of the annotation.
      Overrides:
        `visitEnd` in class `AnnotationVisitor`

    - #### check

          public void check(int api)

      Checks that this annotation node is compatible with the given ASM API version. This methods checks that this node, and all its nodes recursively, do not contain elements that were introduced in more recent versions of the ASM API than the given version.
      Parameters:
        `api` - an ASM API version. Must be one of `Opcodes.ASM4` or `Opcodes.ASM5`.

    - #### accept

          public void accept(AnnotationVisitor av)

      Makes the given visitor visit this annotation.
      Parameters:
        `av` - an annotation visitor. Maybe `null`.