# 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`
  `static final byte`
  `ARRAY`
  `static final byte`
  `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`
  `static final byte`
  `PRIMITIVE_BOOLEAN`
  `static final byte`
  `PRIMITIVE_BYTE`
  `static final byte`
  `PRIMITIVE_CHAR`
  `static final byte`
  `PRIMITIVE_DOUBLE`
  `static final byte`
  `PRIMITIVE_FLOAT`
  `static final byte`
  `PRIMITIVE_INT`
  `static final byte`
  `PRIMITIVE_LONG`
  `static final byte`
  `PRIMITIVE_SHORT`
  `static final byte`
  `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)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `dump(DataOutputStream dos)`
  `int`
  `getElementValueType()`
  `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()`
  `String`
  `toShortString()`
  `String`
  `toString()`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### STRING

    public static final byte STRING
    See Also:
      - Constant Field Values

  - ### ENUM_CONSTANT

    public static final byte ENUM_CONSTANT
    See Also:
      - Constant Field Values

  - ### CLASS

    public static final byte CLASS
    See Also:
      - Constant Field Values

  - ### ANNOTATION

    public static final byte ANNOTATION
    See Also:
      - Constant Field Values

  - ### ARRAY

    public static final byte ARRAY
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_INT

    public static final byte PRIMITIVE_INT
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_BYTE

    public static final byte PRIMITIVE_BYTE
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_CHAR

    public static final byte PRIMITIVE_CHAR
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_DOUBLE

    public static final byte PRIMITIVE_DOUBLE
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_FLOAT

    public static final byte PRIMITIVE_FLOAT
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_LONG

    public static final byte PRIMITIVE_LONG
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_SHORT

    public static final byte PRIMITIVE_SHORT
    See Also:
      - Constant Field Values

  - ### PRIMITIVE_BOOLEAN

    public static final byte 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)

- ## 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
    Throws:
      `IOException`

  - ### getElementValueType

    public int getElementValueType()

  - ### stringifyValue

    public abstract String stringifyValue()

  - ### toShortString

    public String toShortString()

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`