# Interface ConstantDynamicEntry

All Superinterfaces:
  `DynamicConstantPoolEntry, LoadableConstantEntry, PoolEntry`

public sealed interface ConstantDynamicEntry extends DynamicConstantPoolEntry, LoadableConstantEntry
Models a `CONSTANT_Dynamic_info` structure, representing a dynamically-computed constant, in the constant pool of a `class` file.

The use of a `ConstantDynamicEntry` is modeled by a `DynamicConstantDesc`. Conversions are through `asSymbol()` and `ConstantPoolBuilder.constantDynamicEntry(DynamicConstantDesc)`.

A dynamic constant entry is composite:

    ConstantDynamicEntry(
        BootstrapMethodEntry bootstrap,
        NameAndTypeEntry nameAndType
    )

where `nameAndType.type()` is a field descriptor string.

API Note:
  A dynamically-computed constant is frequently called a dynamic constant, or a condy, from the abbreviation of "constant dynamic".
See Java Virtual Machine Specification:
  4.4.10 The `CONSTANT_Dynamic_info` and `CONSTANT_InvokeDynamic_info` Structures
Since:
  24
See Also:
  - `ConstantPoolBuilder::constantDynamicEntry`
  - `DynamicConstantDesc`
  - Dynamically-computed constants

## Field Summary

### Fields declared in interface PoolEntry

`TAG_CLASS, TAG_DOUBLE, TAG_DYNAMIC, TAG_FIELDREF, TAG_FLOAT, TAG_INTEGER, TAG_INTERFACE_METHODREF, TAG_INVOKE_DYNAMIC, TAG_LONG, TAG_METHOD_HANDLE, TAG_METHOD_TYPE, TAG_METHODREF, TAG_MODULE, TAG_NAME_AND_TYPE, TAG_PACKAGE, TAG_STRING, TAG_UTF8`

## Method Summary

Modifier and Type
Method
Description
`default DynamicConstantDesc<?>`
`asSymbol()`
Returns a symbolic descriptor for this dynamically-computed constant.
`default ConstantDesc`
`constantValue()`
Returns a symbolic descriptor of this constant.
`default TypeKind`
`typeKind()`
Returns the data type of this constant.
`default ClassDesc`
`typeSymbol()`
Returns a symbolic descriptor for the field type of this dynamically-computed constant.

### Methods declared in interface DynamicConstantPoolEntry

`bootstrap, bootstrapMethodIndex, name, nameAndType, type`

### Methods declared in interface PoolEntry

`constantPool, index, tag, width`

## Method Details

### typeSymbol

default ClassDesc typeSymbol()
Returns a symbolic descriptor for the field type of this dynamically-computed constant.

Returns:
  a symbolic descriptor for the field type of this dynamically-computed constant

### constantValue

default ConstantDesc constantValue()
Returns a symbolic descriptor of this constant.

This is equivalent to `asSymbol()`.

Specified by:
  `constantValue` in interface `LoadableConstantEntry`
Returns:
  a symbolic descriptor of this constant
See Also:
  - `ConstantPoolBuilder.loadableConstantEntry(ConstantDesc)`

### asSymbol

default DynamicConstantDesc<?> asSymbol()
Returns a symbolic descriptor for this dynamically-computed constant.

Returns:
  a symbolic descriptor for this dynamically-computed constant
See Also:
  - `ConstantPoolBuilder::constantDynamicEntry(DynamicConstantDesc)`

### typeKind

default TypeKind typeKind()
Returns the data type of this constant.

If the data type is of category 2, this constant must be loaded with `ldc2_w`; otherwise, the data type is of category 1, and this constant must be loaded with `ldc` or `ldc_w`.

Specified by:
  `typeKind` in interface `LoadableConstantEntry`
API Note:
  The data type of a dynamically-computed constant depends on its descriptor, while the data type of all other constants can be determined by their constant type.
Returns:
  the data type of this constant