Module java.base
Package java.lang.constant

## Class DynamicCallSiteDesc

- java.lang.Object
- - java.lang.constant.DynamicCallSiteDesc

-     public class DynamicCallSiteDesc
      extends Object

  A nominal descriptor for an `invokedynamic` call site.

  Concrete subtypes of DynamicCallSiteDesc must be value-based.

  Since:
    12

- - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `ConstantDesc[]` | `bootstrapArgs()` | Returns `ConstantDesc`s describing the bootstrap arguments for the `invokedynamic`.
    `MethodHandleDesc` | `bootstrapMethod()` | Returns a `MethodHandleDesc` describing the bootstrap method for the `invokedynamic`.
    `boolean` | `equals​(Object o)` | Compares the specified object with this descriptor for equality.
    `String` | `invocationName()` | Returns the invocation name that would appear in the `NameAndType` operand of the `invokedynamic`.
    `MethodTypeDesc` | `invocationType()` | Returns a `MethodTypeDesc` describing the invocation type that would appear in the `NameAndType` operand of the `invokedynamic`.
    `static DynamicCallSiteDesc` | `of​(DirectMethodHandleDesc bootstrapMethod, MethodTypeDesc invocationType)` | Creates a nominal descriptor for an `invokedynamic` call site whose bootstrap method has no static arguments and for which the name parameter is `ConstantDescs.DEFAULT_NAME`.
    `static DynamicCallSiteDesc` | `of​(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType)` | Creates a nominal descriptor for an `invokedynamic` call site whose bootstrap method has no static arguments.
    `static DynamicCallSiteDesc` | `of​(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)` | Creates a nominal descriptor for an `invokedynamic` call site.
    `CallSite` | `resolveCallSiteDesc​(MethodHandles.Lookup lookup)` | Reflectively invokes the bootstrap method with the specified arguments, and return the resulting `CallSite`
    `String` | `toString()` | Returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.
    `DynamicCallSiteDesc` | `withArgs​(ConstantDesc... bootstrapArgs)` | Returns a nominal descriptor for an `invokedynamic` call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
    `DynamicCallSiteDesc` | `withNameAndType​(String invocationName, MethodTypeDesc invocationType)` | Returns a nominal descriptor for an `invokedynamic` call site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType

    - ### Methods declared in class java.lang.Object

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

- - ### Method Detail

    - #### of

          public static DynamicCallSiteDesc of​(DirectMethodHandleDesc bootstrapMethod,
                                               String invocationName,
                                               MethodTypeDesc invocationType,
                                               ConstantDesc... bootstrapArgs)

      Creates a nominal descriptor for an `invokedynamic` call site.
      Parameters:
        `bootstrapMethod` - a `DirectMethodHandleDesc` describing the bootstrap method for the `invokedynamic`
        `invocationName` - The unqualified name that would appear in the `NameAndType` operand of the `invokedynamic`
        `invocationType` - a `MethodTypeDesc` describing the invocation type that would appear in the `NameAndType` operand of the `invokedynamic`
        `bootstrapArgs` - `ConstantDesc`s describing the static arguments to the bootstrap, that would appear in the `BootstrapMethods` attribute
      Returns:
        the nominal descriptor
      Throws:
        `NullPointerException` - if any parameter is null
        `IllegalArgumentException` - if the invocation name has the incorrect format
      See The Java™ Virtual Machine Specification:
        4.2.2 Unqualified Names

    - #### of

          public static DynamicCallSiteDesc of​(DirectMethodHandleDesc bootstrapMethod,
                                               String invocationName,
                                               MethodTypeDesc invocationType)

      Creates a nominal descriptor for an `invokedynamic` call site whose bootstrap method has no static arguments.
      Parameters:
        `bootstrapMethod` - The bootstrap method for the `invokedynamic`
        `invocationName` - The invocationName that would appear in the `NameAndType` operand of the `invokedynamic`
        `invocationType` - The invocation invocationType that would appear in the `NameAndType` operand of the `invokedynamic`
      Returns:
        the nominal descriptor
      Throws:
        `NullPointerException` - if any parameter is null
        `IllegalArgumentException` - if the invocation name has the incorrect format

    - #### of

          public static DynamicCallSiteDesc of​(DirectMethodHandleDesc bootstrapMethod,
                                               MethodTypeDesc invocationType)

      Creates a nominal descriptor for an `invokedynamic` call site whose bootstrap method has no static arguments and for which the name parameter is `ConstantDescs.DEFAULT_NAME`.
      Parameters:
        `bootstrapMethod` - a `DirectMethodHandleDesc` describing the bootstrap method for the `invokedynamic`
        `invocationType` - a `MethodTypeDesc` describing the invocation type that would appear in the `NameAndType` operand of the `invokedynamic`
      Returns:
        the nominal descriptor
      Throws:
        `NullPointerException` - if any parameter is null

    - #### withArgs

          public DynamicCallSiteDesc withArgs​(ConstantDesc... bootstrapArgs)

      Returns a nominal descriptor for an `invokedynamic` call site whose bootstrap method, name, and invocation type are the same as this one, but with the specified bootstrap arguments.
      Parameters:
        `bootstrapArgs` - `ConstantDesc`s describing the static arguments to the bootstrap, that would appear in the `BootstrapMethods` attribute
      Returns:
        the nominal descriptor
      Throws:
        `NullPointerException` - if any parameter is null

    - #### withNameAndType

          public DynamicCallSiteDesc withNameAndType​(String invocationName,
                                                     MethodTypeDesc invocationType)

      Returns a nominal descriptor for an `invokedynamic` call site whose bootstrap and bootstrap arguments are the same as this one, but with the specified invocationName and invocation invocationType
      Parameters:
        `invocationName` - The unqualified name that would appear in the `NameAndType` operand of the `invokedynamic`
        `invocationType` - a `MethodTypeDesc` describing the invocation type that would appear in the `NameAndType` operand of the `invokedynamic`
      Returns:
        the nominal descriptor
      Throws:
        `NullPointerException` - if any parameter is null
        `IllegalArgumentException` - if the invocation name has the incorrect format
      See The Java™ Virtual Machine Specification:
        4.2.2 Unqualified Names

    - #### invocationName

          public String invocationName()

      Returns the invocation name that would appear in the `NameAndType` operand of the `invokedynamic`.
      Returns:
        the invocation name

    - #### invocationType

          public MethodTypeDesc invocationType()

      Returns a `MethodTypeDesc` describing the invocation type that would appear in the `NameAndType` operand of the `invokedynamic`.
      Returns:
        the invocation type

    - #### bootstrapMethod

          public MethodHandleDesc bootstrapMethod()

      Returns a `MethodHandleDesc` describing the bootstrap method for the `invokedynamic`.
      Returns:
        the bootstrap method for the `invokedynamic`

    - #### bootstrapArgs

          public ConstantDesc[] bootstrapArgs()

      Returns `ConstantDesc`s describing the bootstrap arguments for the `invokedynamic`. The returned array is always non-null. A zero length array is returned if this DynamicCallSiteDesc has no bootstrap arguments.
      Returns:
        the bootstrap arguments for the `invokedynamic`

    - #### resolveCallSiteDesc

          public CallSite resolveCallSiteDesc​(MethodHandles.Lookup lookup)
                                       throws Throwable

      Reflectively invokes the bootstrap method with the specified arguments, and return the resulting `CallSite`
      Parameters:
        `lookup` - The `MethodHandles.Lookup` used to resolve class names
      Returns:
        the `CallSite`
      Throws:
        `Throwable` - if any exception is thrown by the bootstrap method

    - #### equals

          public final boolean equals​(Object o)

      Compares the specified object with this descriptor for equality. Returns `true` if and only if the specified object is also a DynamicCallSiteDesc, and both descriptors have equal bootstrap methods, bootstrap argument lists, invocation name, and invocation type.
      Overrides:
        `equals` in class `Object`
      Parameters:
        `o` - the `DynamicCallSiteDesc` to compare to this `DynamicCallSiteDesc`
      Returns:
        `true` if the specified `DynamicCallSiteDesc` is equals to this `DynamicCallSiteDesc`.
      See Also:
        `Object.hashCode()`, `HashMap`

    - #### toString

          public String toString()

      Returns a compact textual description of this call site description, including the bootstrap method, the invocation name and type, and the static bootstrap arguments.
      Overrides:
        `toString` in class `Object`
      Returns:
        A compact textual description of this call site descriptor