# Class ElementValue

java.lang.Object
org.apache.bcel.classfile.ElementValue

Direct Known Subclasses:
  `AnnotationElementValue, ArrayElementValue, ClassElementValue, EnumElementValue, SimpleElementValue`

public abstract class ElementValue extends Object
The element_value structure is documented at https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.7.16.1

     element_value {
        u1 tag;
        union {
            u2 const_value_index;

            {   u2 type_name_index;
                u2 const_name_index;
            } enum_const_value;

            u2 class_info_index;

            annotation annotation_value;

            {   u2            num_values;
                element_value values[num_values];
            } array_value;
        } value;
    }

Since:
  6.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final byte`
  `ANNOTATION`
  Element value type: annotation.
  `static final byte`
  `ARRAY`
  Element value type: array.
  `static final byte`
  `CLASS`
  Element value type: class.
  `protected ConstantPool`
  `cpool`
  Deprecated.
  (since 6.0) will be made private and final; do not access directly, use getter.
  `static final byte`
  `ENUM_CONSTANT`
  Element value type: enum constant.
  `static final byte`
  `PRIMITIVE_BOOLEAN`
  Element value type: primitive boolean.
  `static final byte`
  `PRIMITIVE_BYTE`
  Element value type: primitive byte.
  `static final byte`
  `PRIMITIVE_CHAR`
  Element value type: primitive char.
  `static final byte`
  `PRIMITIVE_DOUBLE`
  Element value type: primitive double.
  `static final byte`
  `PRIMITIVE_FLOAT`
  Element value type: primitive float.
  `static final byte`
  `PRIMITIVE_INT`
  Element value type: primitive int.
  `static final byte`
  `PRIMITIVE_LONG`
  Element value type: primitive long.
  `static final byte`
  `PRIMITIVE_SHORT`
  Element value type: primitive short.
  `static final byte`
  `STRING`
  Element value type: string.
  `protected int`
  `type`
  Deprecated.
  (since 6.0) will be made private and final; do not access directly, use getter.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `ElementValue(int type, ConstantPool cpool)`
  Constructs an ElementValue.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `dump(DataOutputStream dos)`
  Dumps this element value to a DataOutputStream.
  `int`
  `getElementValueType()`
  Gets the element value type.
  `static ElementValue`
  `readElementValue(DataInput input, ConstantPool cpool)`
  Reads an `element_value` as an `ElementValue`.
  `static ElementValue`
  `readElementValue(DataInput input, ConstantPool cpool, int arrayNesting)`
  Reads an `element_value` as an `ElementValue`.
  `abstract String`
  `stringifyValue()`
  Returns a string representation of the element value.
  `String`
  `toShortString()`
  Returns a short string representation of the element value.
  `String`
  `toString()`
  Returns a string representation of the element value.

  ### Methods inherited from class Object

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

- ## Field Details

  - ### STRING

    public static final byte STRING
    Element value type: string.
    See Also:
      - Constant Field Values

  - ### ENUM_CONSTANT

    public static final byte ENUM_CONSTANT
    Element value type: enum constant.
    See Also:
      - Constant Field Values

  - ### CLASS

    public static final byte CLASS
    Element value type: class.
    See Also:
      - Constant Field Values

  - ### ANNOTATION

    public static final byte ANNOTATION
    Element value type: annotation.
    See Also:
      - Constant Field Values

  - ### ARRAY

    public static final byte ARRAY
    Element value type: array.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_INT

    public static final byte PRIMITIVE_INT
    Element value type: primitive int.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_BYTE

    public static final byte PRIMITIVE_BYTE
    Element value type: primitive byte.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_CHAR

    public static final byte PRIMITIVE_CHAR
    Element value type: primitive char.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_DOUBLE

    public static final byte PRIMITIVE_DOUBLE
    Element value type: primitive double.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_FLOAT

    public static final byte PRIMITIVE_FLOAT
    Element value type: primitive float.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_LONG

    public static final byte PRIMITIVE_LONG
    Element value type: primitive long.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_SHORT

    public static final byte PRIMITIVE_SHORT
    Element value type: primitive short.
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_BOOLEAN

    public static final byte PRIMITIVE_BOOLEAN
    Element value type: primitive boolean.
    See Also:
      - Constant Field Values

  - ### type

    @Deprecated protected int type
    Deprecated.
    (since 6.0) will be made private and final; do not access directly, use getter.

  - ### cpool

    @Deprecated protected ConstantPool cpool
    Deprecated.
    (since 6.0) will be made private and final; do not access directly, use getter.

- ## Constructor Details

  - ### ElementValue

    protected ElementValue(int type, ConstantPool cpool)
    Constructs an ElementValue.
    Parameters:
      `type` - the element value type.
      `cpool` - the constant pool.

- ## Method Details

  - ### readElementValue

    public static ElementValue readElementValue(DataInput input, ConstantPool cpool) throws IOException
    Reads an `element_value` as an `ElementValue`.
    Parameters:
      `input` - Raw data input.
      `cpool` - Constant pool.
    Returns:
      a new ElementValue.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### readElementValue

    public static ElementValue readElementValue(DataInput input, ConstantPool cpool, int arrayNesting) throws IOException
    Reads an `element_value` as an `ElementValue`.
    Parameters:
      `input` - Raw data input.
      `cpool` - Constant pool.
      `arrayNesting` - level of current array nesting.
    Returns:
      a new ElementValue.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      6.7.0

  - ### dump

    public abstract void dump(DataOutputStream dos) throws IOException
    Dumps this element value to a DataOutputStream.
    Parameters:
      `dos` - the output stream.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### getElementValueType

    public int getElementValueType()
    Gets the element value type.
    Returns:
      the element value type.

  - ### stringifyValue

    public abstract String stringifyValue()
    Returns a string representation of the element value.
    Returns:
      a string representation of the element value.

  - ### toShortString

    public String toShortString()
    Returns a short string representation of the element value.
    Returns:
      a short string representation of the element value.

  - ### toString

    public String toString()
    Returns a string representation of the element value.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of the element value.