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

# Interface InvokeDynamicInstruction

All Superinterfaces:
  `ClassFileElement, CodeElement, Instruction`

public sealed interface InvokeDynamicInstruction extends Instruction
Models a dynamically-computed call site invocation instruction in the `code` array of a `Code` attribute. The corresponding opcode is `invokedynamic`. Delivered as a `CodeElement` when traversing the elements of a `CodeModel`.

A dynamically-computed call site invocation instruction is composite:

    InvokeDynamicInstruction(InvokeDynamicEntry invokedynamic)

See Java Virtual Machine Specification:
  6.5.invokedynamic invokedynamic
Since:
  24
See Also:
  - `Opcode.Kind.INVOKE_DYNAMIC`
  - `CodeBuilder::invokedynamic`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default List<ConstantDesc>`
  `bootstrapArgs()`
  Returns the bootstrap arguments of the call site.
  `default DirectMethodHandleDesc`
  `bootstrapMethod()`
  Returns the bootstrap method of the call site.
  `InvokeDynamicEntry`
  `invokedynamic()`
  Returns an `InvokeDynamicEntry` describing the call site.
  `default Utf8Entry`
  `name()`
  Returns the invocation name of the call site.
  `static InvokeDynamicInstruction`
  `of(InvokeDynamicEntry invokedynamic)`
  Returns an invokedynamic instruction.
  `default Utf8Entry`
  `type()`
  Returns the invocation type of the call site.
  `default MethodTypeDesc`
  `typeSymbol()`
  Returns the invocation type of the call site, as a symbolic descriptor.

  ### Methods declared in interface Instruction

  `opcode, sizeInBytes`
  Modifier and Type
  Method
  Description
  `Opcode`
  `opcode()`
  Returns the operation of this instruction.
  `int`
  `sizeInBytes()`
  Returns the size in bytes of this instruction.

- ## Method Details

  - ### invokedynamic

    InvokeDynamicEntry invokedynamic()
    Returns an `InvokeDynamicEntry` describing the call site.
    Returns:
      an `InvokeDynamicEntry` describing the call site

  - ### name

    default Utf8Entry name()
    Returns the invocation name of the call site.
    Returns:
      the invocation name of the call site

  - ### type

    default Utf8Entry type()
    Returns the invocation type of the call site.
    API Note:
      A symbolic descriptor for the invocation typeis available through `typeSymbol()`.
    Returns:
      the invocation type of the call site

  - ### typeSymbol

    default MethodTypeDesc typeSymbol()
    Returns the invocation type of the call site, as a symbolic descriptor.
    Returns:
      the invocation type of the call site, as a symbolic descriptor

  - ### bootstrapMethod

    default DirectMethodHandleDesc bootstrapMethod()
    Returns the bootstrap method of the call site.
    Returns:
      the bootstrap method of the call site

  - ### bootstrapArgs

    default List<ConstantDesc> bootstrapArgs()
    Returns the bootstrap arguments of the call site.
    Returns:
      the bootstrap arguments of the call site

  - ### of

    static InvokeDynamicInstruction of(InvokeDynamicEntry invokedynamic)
    Returns an invokedynamic instruction.
    Parameters:
      `invokedynamic` - the constant pool entry describing the call site
    Returns:
      an invokedynamic instruction