Package org.spongepowered.asm.util.asm

## Interface IAnnotationHandle

- All Known Implementing Classes:
    `Annotations.Handle`

      public interface IAnnotationHandle

  Interface for annotation handle since some classes may need to read info from both ASM `AnnotationNode`s at runtime and mirror annotations in the AP at compile time.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `exists()` | Get whether the annotation inside the handle actually exists, if the contained element is null, returns false.
    `IAnnotationHandle` | `getAnnotation​(java.lang.String key)` | Get an annotation value as an annotation handle
    `java.util.List<IAnnotationHandle>` | `getAnnotationList​(java.lang.String key)` | Retrieve an annotation key as a list of annotation handles
    `boolean` | `getBoolean​(java.lang.String key, boolean defaultValue)` | Get the primitive boolean value with the specified key or return null if not present or not set
    `java.lang.String` | `getDesc()` | Get the annotation descriptor
    `<T> java.util.List<T>` | `getList()` | Retrieve the annotation value as a list with values of the specified type.
    `<T> java.util.List<T>` | `getList​(java.lang.String key)` | Retrieve the annotation value with the specified key as a list with values of the specified type.
    `java.util.List<org.objectweb.asm.Type>` | `getTypeList​(java.lang.String key)` | Retrieve an annotation key as a list of Types.
    `org.objectweb.asm.Type` | `getTypeValue​(java.lang.String key)` | Get an annotation value as an ASM `Type`.
    `<T> T` | `getValue()` | Get the annotation value or return null if not present or not set
    `<T> T` | `getValue​(java.lang.String key)` | Get the annotation value with the specified key or return null if not present or not set
    `<T> T` | `getValue​(java.lang.String key, T defaultValue)` | Get a value with the specified key from this annotation, return the specified default value if the key is not set or is not present

- - ### Method Detail

    - #### exists

          boolean exists()

      Get whether the annotation inside the handle actually exists, if the contained element is null, returns false.
      Returns:
        true if the annotation exists

    - #### getDesc

          java.lang.String getDesc()

      Get the annotation descriptor

    - #### getAnnotationList

          java.util.List<IAnnotationHandle> getAnnotationList​(java.lang.String key)

      Retrieve an annotation key as a list of annotation handles
      Parameters:
        `key` - key to fetch
      Returns:
        list of annotations

    - #### getTypeValue

          org.objectweb.asm.Type getTypeValue​(java.lang.String key)

      Get an annotation value as an ASM `Type`. This is special-cased because the different APIs return class literals in different ways. Under ASM we will receieve `Type` instances, but at compile time we will get `TypeMirror`s instead. This overload is provided so that subclasses have to marshal everything into `Type` for consistency.
      Parameters:
        `key` - key to fetch
      Returns:
        value

    - #### getTypeList

          java.util.List<org.objectweb.asm.Type> getTypeList​(java.lang.String key)

      Retrieve an annotation key as a list of Types. This is special-cased because the different APIs return class literals in different ways. Under ASM we will receieve `Type` instances, but at compile time we will get `TypeMirror`s instead. This overload is provided so that subclasses have to marshal everything into `Type` for consistency.
      Parameters:
        `key` - key to fetch
      Returns:
        list of types

    - #### getAnnotation

          IAnnotationHandle getAnnotation​(java.lang.String key)

      Get an annotation value as an annotation handle
      Parameters:
        `key` - key to search for in the value map
      Returns:
        value or `null` if not set

    - #### getValue

          <T> T getValue​(java.lang.String key,
                         T defaultValue)

      Get a value with the specified key from this annotation, return the specified default value if the key is not set or is not present
      Type Parameters:
        `T` - duck type
      Parameters:
        `key` - key
        `defaultValue` - value to return if the key is not set or not present
      Returns:
        value or default if not set

    - #### getValue

          <T> T getValue()

      Get the annotation value or return null if not present or not set
      Type Parameters:
        `T` - duck type
      Returns:
        value or null if not present or not set

    - #### getValue

          <T> T getValue​(java.lang.String key)

      Get the annotation value with the specified key or return null if not present or not set
      Type Parameters:
        `T` - duck type
      Parameters:
        `key` - key to fetch
      Returns:
        value or null if not present or not set

    - #### getBoolean

          boolean getBoolean​(java.lang.String key,
                             boolean defaultValue)

      Get the primitive boolean value with the specified key or return null if not present or not set
      Parameters:
        `key` - key to fetch
        `defaultValue` - default value to return if value is not present
      Returns:
        value or default if not present or not set

    - #### getList

          <T> java.util.List<T> getList()

      Retrieve the annotation value as a list with values of the specified type. Returns an empty list if the value is not present or not set.
      Type Parameters:
        `T` - list element duck type
      Returns:
        list of values

    - #### getList

          <T> java.util.List<T> getList​(java.lang.String key)

      Retrieve the annotation value with the specified key as a list with values of the specified type. Returns an empty list if the value is not present or not set.
      Type Parameters:
        `T` - list element duck type
      Parameters:
        `key` - key to fetch
      Returns:
        list of values