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
`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