AnnotationValue (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.lang.classfile, interface: AnnotationValue
Keywords: java.lang.classfile.AnnotationValue interface

# Interface AnnotationValue

All Known Subinterfaces:
  `AnnotationValue.OfAnnotation, AnnotationValue.OfArray, AnnotationValue.OfBoolean, AnnotationValue.OfByte, AnnotationValue.OfChar, AnnotationValue.OfClass, AnnotationValue.OfConstant, AnnotationValue.OfDouble, AnnotationValue.OfEnum, AnnotationValue.OfFloat, AnnotationValue.OfInt, AnnotationValue.OfLong, AnnotationValue.OfShort, AnnotationValue.OfString`

public sealed interface AnnotationValue permits AnnotationValue.OfAnnotation, AnnotationValue.OfArray, AnnotationValue.OfConstant, AnnotationValue.OfClass, AnnotationValue.OfEnum
Models an `element_value` structure, or a value of an element-value pair of an annotation, as defined in JVMS 4.7.16.1.

Two `AnnotationValue` objects should be compared using the `equals` method.

Sealed Class Hierarchy Graph:
Since:
  24
See Also:
  - `Annotation`
  - `AnnotationElement`
  - Annotations in core reflection

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `AnnotationValue.OfAnnotation`
  Models an annotation value of an element-value pair.
  `static interface`
  `AnnotationValue.OfArray`
  Models an array value of an element-value pair.
  `static interface`
  `AnnotationValue.OfBoolean`
  Models a boolean value of an element-value pair.
  `static interface`
  `AnnotationValue.OfByte`
  Models a byte value of an element-value pair.
  `static interface`
  `AnnotationValue.OfChar`
  Models a char value of an element-value pair.
  `static interface`
  `AnnotationValue.OfClass`
  Models a class value of an element-value pair.
  `static interface`
  `AnnotationValue.OfConstant`
  Models a constant value of an element-value pair.
  `static interface`
  `AnnotationValue.OfDouble`
  Models a double value of an element-value pair.
  `static interface`
  `AnnotationValue.OfEnum`
  Models an enum value of an element-value pair.
  `static interface`
  `AnnotationValue.OfFloat`
  Models a float value of an element-value pair.
  `static interface`
  `AnnotationValue.OfInt`
  Models an int value of an element-value pair.
  `static interface`
  `AnnotationValue.OfLong`
  Models a long value of an element-value pair.
  `static interface`
  `AnnotationValue.OfShort`
  Models a short value of an element-value pair.
  `static interface`
  `AnnotationValue.OfString`
  Models a string value of an element-value pair.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `TAG_ANNOTATION`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfAnnotation`.
  `static final int`
  `TAG_ARRAY`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfArray`.
  `static final int`
  `TAG_BOOLEAN`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfBoolean`.
  `static final int`
  `TAG_BYTE`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfByte`.
  `static final int`
  `TAG_CHAR`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfChar`.
  `static final int`
  `TAG_CLASS`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfClass`.
  `static final int`
  `TAG_DOUBLE`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfDouble`.
  `static final int`
  `TAG_ENUM`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfEnum`.
  `static final int`
  `TAG_FLOAT`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfFloat`.
  `static final int`
  `TAG_INT`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfInt`.
  `static final int`
  `TAG_LONG`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfLong`.
  `static final int`
  `TAG_SHORT`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfShort`.
  `static final int`
  `TAG_STRING`
  The `tag` indicating the value of an element-value pair is `AnnotationValue.OfString`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static AnnotationValue`
  `of(Object value)`
  Returns an annotation element.
  `static AnnotationValue.OfAnnotation`
  `ofAnnotation(Annotation value)`
  Returns an annotation value for an element-value pair.
  `static AnnotationValue.OfArray`
  `ofArray(AnnotationValue... values)`
  Returns an array value for an element-value pair.
  `static AnnotationValue.OfArray`
  `ofArray(List<AnnotationValue> values)`
  Returns an array value for an element-value pair.
  `static AnnotationValue.OfBoolean`
  `ofBoolean(boolean value)`
  Returns a boolean value for an element-value pair.
  `static AnnotationValue.OfBoolean`
  `ofBoolean(IntegerEntry value)`
  Returns a boolean value for an element-value pair.
  `static AnnotationValue.OfByte`
  `ofByte(byte value)`
  Returns a byte value for an element-value pair.
  `static AnnotationValue.OfByte`
  `ofByte(IntegerEntry value)`
  Returns a byte value for an element-value pair.
  `static AnnotationValue.OfChar`
  `ofChar(char value)`
  Returns a char value for an element-value pair.
  `static AnnotationValue.OfChar`
  `ofChar(IntegerEntry value)`
  Returns a char value for an element-value pair.
  `static AnnotationValue.OfClass`
  `ofClass(Utf8Entry className)`
  Returns a class value for an element-value pair.
  `static AnnotationValue.OfClass`
  `ofClass(ClassDesc className)`
  Returns a class value for an element-value pair.
  `static AnnotationValue.OfDouble`
  `ofDouble(double value)`
  Returns a double value for an element-value pair.
  `static AnnotationValue.OfDouble`
  `ofDouble(DoubleEntry value)`
  Returns a double value for an element-value pair.
  `static AnnotationValue.OfEnum`
  `ofEnum(Utf8Entry className, Utf8Entry constantName)`
  Returns an enum value for an element-value pair.
  `static AnnotationValue.OfEnum`
  `ofEnum(ClassDesc className, String constantName)`
  Returns an enum value for an element-value pair.
  `static AnnotationValue.OfFloat`
  `ofFloat(float value)`
  Returns a float value for an element-value pair.
  `static AnnotationValue.OfFloat`
  `ofFloat(FloatEntry value)`
  Returns a float value for an element-value pair.
  `static AnnotationValue.OfInt`
  `ofInt(int value)`
  Returns an int value for an element-value pair.
  `static AnnotationValue.OfInt`
  `ofInt(IntegerEntry value)`
  Returns an int value for an element-value pair.
  `static AnnotationValue.OfLong`
  `ofLong(long value)`
  Returns a long value for an element-value pair.
  `static AnnotationValue.OfLong`
  `ofLong(LongEntry value)`
  Returns a long value for an element-value pair.
  `static AnnotationValue.OfShort`
  `ofShort(short value)`
  Returns a short value for an element-value pair.
  `static AnnotationValue.OfShort`
  `ofShort(IntegerEntry value)`
  Returns a short value for an element-value pair.
  `static AnnotationValue.OfString`
  `ofString(Utf8Entry value)`
  Returns a string value for an element-value pair.
  `static AnnotationValue.OfString`
  `ofString(String value)`
  Returns a string value for an element-value pair.
  `int`
  `tag()`
  Returns the tag character for this value as per JVMS 4.7.16.1.

- ## Field Details

  - ### TAG_BYTE

    static final int TAG_BYTE
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfByte`.
    See Also:
      - Constant Field Values

  - ### TAG_CHAR

    static final int TAG_CHAR
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfChar`.
    See Also:
      - Constant Field Values

  - ### TAG_DOUBLE

    static final int TAG_DOUBLE
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfDouble`.
    See Also:
      - Constant Field Values

  - ### TAG_FLOAT

    static final int TAG_FLOAT
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfFloat`.
    See Also:
      - Constant Field Values

  - ### TAG_INT

    static final int TAG_INT
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfInt`.
    See Also:
      - Constant Field Values

  - ### TAG_LONG

    static final int TAG_LONG
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfLong`.
    See Also:
      - Constant Field Values

  - ### TAG_SHORT

    static final int TAG_SHORT
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfShort`.
    See Also:
      - Constant Field Values

  - ### TAG_BOOLEAN

    static final int TAG_BOOLEAN
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfBoolean`.
    See Also:
      - Constant Field Values

  - ### TAG_STRING

    static final int TAG_STRING
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfString`.
    See Also:
      - Constant Field Values

  - ### TAG_ENUM

    static final int TAG_ENUM
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfEnum`.
    See Also:
      - Constant Field Values

  - ### TAG_CLASS

    static final int TAG_CLASS
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfClass`.
    See Also:
      - Constant Field Values

  - ### TAG_ANNOTATION

    static final int TAG_ANNOTATION
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfAnnotation`.
    See Also:
      - Constant Field Values

  - ### TAG_ARRAY

    static final int TAG_ARRAY
    The `tag` indicating the value of an element-value pair is `AnnotationValue.OfArray`.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### tag

    int tag()
    Returns the tag character for this value as per JVMS 4.7.16.1. The tag characters have a one-to-one mapping to the types of annotation element values.
    API Note:
      `TAG_`-prefixed constants in this class, such as `TAG_INT`, describe the possible return values of this method. The return type is `int` for consistency with union indicator items in other union structures in the `class` file format.
    Returns:
      the tag character for this value as per JVMS 4.7.16.1

  - ### ofEnum

    static AnnotationValue.OfEnum ofEnum(Utf8Entry className, Utf8Entry constantName)
    Returns an enum value for an element-value pair.
    Parameters:
      `className` - the descriptor string of the enum class
      `constantName` - the name of the enum constant
    Returns:
      an enum value for an element-value pair

  - ### ofEnum

    static AnnotationValue.OfEnum ofEnum(ClassDesc className, String constantName)
    Returns an enum value for an element-value pair.
    Parameters:
      `className` - the descriptor of the enum class
      `constantName` - the name of the enum constant
    Returns:
      an enum value for an element-value pair

  - ### ofClass

    static AnnotationValue.OfClass ofClass(Utf8Entry className)
    Returns a class value for an element-value pair.
    Parameters:
      `className` - the descriptor string of the class
    Returns:
      a class value for an element-value pair

  - ### ofClass

    static AnnotationValue.OfClass ofClass(ClassDesc className)
    Returns a class value for an element-value pair.
    Parameters:
      `className` - the descriptor of the class
    Returns:
      a class value for an element-value pair

  - ### ofString

    static AnnotationValue.OfString ofString(Utf8Entry value)
    Returns a string value for an element-value pair.
    Parameters:
      `value` - the string
    Returns:
      a string value for an element-value pair

  - ### ofString

    static AnnotationValue.OfString ofString(String value)
    Returns a string value for an element-value pair.
    Parameters:
      `value` - the string
    Returns:
      a string value for an element-value pair

  - ### ofDouble

    static AnnotationValue.OfDouble ofDouble(DoubleEntry value)
    Returns a double value for an element-value pair.
    Parameters:
      `value` - the double value
    Returns:
      a double value for an element-value pair

  - ### ofDouble

    static AnnotationValue.OfDouble ofDouble(double value)
    Returns a double value for an element-value pair.
    Parameters:
      `value` - the double value
    Returns:
      a double value for an element-value pair

  - ### ofFloat

    static AnnotationValue.OfFloat ofFloat(FloatEntry value)
    Returns a float value for an element-value pair.
    Parameters:
      `value` - the float value
    Returns:
      a float value for an element-value pair

  - ### ofFloat

    static AnnotationValue.OfFloat ofFloat(float value)
    Returns a float value for an element-value pair.
    Parameters:
      `value` - the float value
    Returns:
      a float value for an element-value pair

  - ### ofLong

    static AnnotationValue.OfLong ofLong(LongEntry value)
    Returns a long value for an element-value pair.
    Parameters:
      `value` - the long value
    Returns:
      a long value for an element-value pair

  - ### ofLong

    static AnnotationValue.OfLong ofLong(long value)
    Returns a long value for an element-value pair.
    Parameters:
      `value` - the long value
    Returns:
      a long value for an element-value pair

  - ### ofInt

    static AnnotationValue.OfInt ofInt(IntegerEntry value)
    Returns an int value for an element-value pair.
    Parameters:
      `value` - the int value
    Returns:
      an int value for an element-value pair

  - ### ofInt

    static AnnotationValue.OfInt ofInt(int value)
    Returns an int value for an element-value pair.
    Parameters:
      `value` - the int value
    Returns:
      an int value for an element-value pair

  - ### ofShort

    static AnnotationValue.OfShort ofShort(IntegerEntry value)
    Returns a short value for an element-value pair.
    Parameters:
      `value` - the short value
    Returns:
      a short value for an element-value pair

  - ### ofShort

    static AnnotationValue.OfShort ofShort(short value)
    Returns a short value for an element-value pair.
    Parameters:
      `value` - the short value
    Returns:
      a short value for an element-value pair

  - ### ofChar

    static AnnotationValue.OfChar ofChar(IntegerEntry value)
    Returns a char value for an element-value pair.
    Parameters:
      `value` - the char value
    Returns:
      a char value for an element-value pair

  - ### ofChar

    static AnnotationValue.OfChar ofChar(char value)
    Returns a char value for an element-value pair.
    Parameters:
      `value` - the char value
    Returns:
      a char value for an element-value pair

  - ### ofByte

    static AnnotationValue.OfByte ofByte(IntegerEntry value)
    Returns a byte value for an element-value pair.
    Parameters:
      `value` - the byte value
    Returns:
      a byte value for an element-value pair

  - ### ofByte

    static AnnotationValue.OfByte ofByte(byte value)
    Returns a byte value for an element-value pair.
    Parameters:
      `value` - the byte value
    Returns:
      a byte value for an element-value pair

  - ### ofBoolean

    static AnnotationValue.OfBoolean ofBoolean(IntegerEntry value)
    Returns a boolean value for an element-value pair.
    Parameters:
      `value` - the boolean value
    Returns:
      a boolean value for an element-value pair

  - ### ofBoolean

    static AnnotationValue.OfBoolean ofBoolean(boolean value)
    Returns a boolean value for an element-value pair.
    Parameters:
      `value` - the boolean value
    Returns:
      a boolean value for an element-value pair

  - ### ofAnnotation

    static AnnotationValue.OfAnnotation ofAnnotation(Annotation value)
    Returns an annotation value for an element-value pair.
    Parameters:
      `value` - the annotation
    Returns:
      an annotation value for an element-value pair

  - ### ofArray

    static AnnotationValue.OfArray ofArray(List<AnnotationValue> values)
    Returns an array value for an element-value pair.
    API Note:
      See `values()` for conventions on array values derived from Java source code.
    Parameters:
      `values` - the array elements
    Returns:
      an array value for an element-value pair
    Throws:
      `IllegalArgumentException` - if the length of array exceeds the limit of `u2`

  - ### ofArray

    static AnnotationValue.OfArray ofArray(AnnotationValue... values)
    Returns an array value for an element-value pair.
    API Note:
      See `values()` for conventions on array values derived from Java source code.
    Parameters:
      `values` - the array elements
    Returns:
      an array value for an element-value pair
    Throws:
      `IllegalArgumentException` - if the length of array exceeds the limit of `u2`

  - ### of

    static AnnotationValue of(Object value)
    Returns an annotation element. The `value` parameter must be a primitive, a wrapper of primitive, a String, a ClassDesc, an enum constant, or an array of one of these.
    Parameters:
      `value` - the annotation value
    Returns:
      an annotation element
    Throws:
      `IllegalArgumentException` - when the `value` parameter is not a primitive, a wrapper of primitive, a String, a ClassDesc, an enum constant, or an array of one of these; or any array has length over the limit of `u2`