# Interface DynamicConstantPoolEntry

All Superinterfaces:
  `PoolEntry`

All Known Subinterfaces:
  `ConstantDynamicEntry`, `InvokeDynamicEntry`

public sealed interface DynamicConstantPoolEntry extends PoolEntry permits ConstantDynamicEntry, InvokeDynamicEntry
Superinterface modeling dynamically-computed constant pool entries, which include `ConstantDynamicEntry` and `InvokeDynamicEntry`, in the constant pool of a `class` file.

Different types of dynamically-computed constant pool entries bear structural similarities, but they appear in distinct locations. As a result, their uses are represented by different symbolic descriptors, specific to each subtype.

A dynamic constant entry is composite:

    DynamicConstantPoolEntry(
        BootstrapMethodEntry bootstrap,
        NameAndTypeEntry nameAndType
    )

See Java Virtual Machine Specification:
  4.4.10 The `CONSTANT_Dynamic_info` and `CONSTANT_InvokeDynamic_info` Structures
  5.4.3.6 Dynamically-Computed Constant and Call Site Resolution
Sealed Class Hierarchy Graph:
Since:
  24
See Also:
  - Dynamic resolution of call sites and constants

## Field Summary

### Fields declared in interface java.lang.classfile.constantpool.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
`BootstrapMethodEntry`
`bootstrap()`
Returns the entry in the bootstrap method table for this constant.
`int`
`bootstrapMethodIndex()`
Returns index of the entry in the bootstrap method table for this constant.
`default Utf8Entry`
`name()`
Returns the name indicated by this symbolic reference.
`NameAndTypeEntry`
`nameAndType()`
Returns the name and the descriptor string indicated by this symbolic reference.
`default Utf8Entry`
`type()`
Returns the descriptor string indicated by this symbolic reference.

### Methods declared in interface java.lang.classfile.constantpool.PoolEntry

`constantPool, index, tag, width`

## Method Details

### bootstrap

BootstrapMethodEntry bootstrap()
Returns the entry in the bootstrap method table for this constant.

Returns:
  the entry in the bootstrap method table for this constant
See Also:
  - Execution of bootstrap methods
  - `ConstantPoolBuilder::constantDynamicEntry(BootstrapMethodEntry, NameAndTypeEntry)`
  - `ConstantPoolBuilder::invokeDynamicEntry(BootstrapMethodEntry, NameAndTypeEntry)`

### bootstrapMethodIndex

int bootstrapMethodIndex()
Returns index of the entry in the bootstrap method table for this constant. The return value is equivalent to `bootstrap().bsmIndex()`.

Returns:
  index of the entry in the bootstrap method table for this constant

### nameAndType

NameAndTypeEntry nameAndType()
Returns the name and the descriptor string indicated by this symbolic reference.

Returns:
  the name and the descriptor string indicated by this symbolic reference
See Also:
  - Execution of bootstrap methods
  - `ConstantPoolBuilder::constantDynamicEntry(BootstrapMethodEntry, NameAndTypeEntry)`
  - `ConstantPoolBuilder::invokeDynamicEntry(BootstrapMethodEntry, NameAndTypeEntry)`

### name

default Utf8Entry name()
Returns the name indicated by this symbolic reference.

Returns:
  the name indicated by this symbolic reference

### type

default Utf8Entry type()
Returns the descriptor string indicated by this symbolic reference. This is a field descriptor string if this entry is a `ConstantDynamicEntry`, or a method descriptor string if this entry is a `InvokeDynamicEntry`.

API Note:
  Each subinterface has its specific accessor named `typeSymbol` for the symbolic descriptor derived from this descriptor string.
Returns:
  the descriptor string indicated by this symbolic reference