## Uses of Interface
java.lang.constant.ConstantDesc

- Packages that use ConstantDesc
  Package | Description
  --- | ---
  java.lang | Provides classes that are fundamental to the design of the Java programming language.
  java.lang.constant | Classes and interfaces to represent nominal descriptors for run-time entities such as classes or method handles, and classfile entities such as constant pool entries or `invokedynamic` call sites.
  java.lang.invoke | The `java.lang.invoke` package provides low-level primitives for interacting with the Java Virtual Machine.

- - ### Uses of ConstantDesc in java.lang

    Classes in java.lang that implement ConstantDesc
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `Double` | The `Double` class wraps a value of the primitive type `double` in an object.
    `static class` | `Enum.EnumDesc<E extends Enum<E>>` | A nominal descriptor for an `enum` constant.
    `class` | `Float` | The `Float` class wraps a value of primitive type `float` in an object.
    `class` | `Integer` | The `Integer` class wraps a value of the primitive type `int` in an object.
    `class` | `Long` | The `Long` class wraps a value of the primitive type `long` in an object.
    `class` | `String` | The `String` class represents character strings.

  - ### Uses of ConstantDesc in java.lang.constant

    Subinterfaces of ConstantDesc in java.lang.constant
    Modifier and Type | Interface | Description
    --- | --- | ---
    `interface` | `ClassDesc` | A nominal descriptor for a `Class` constant.
    `interface` | `DirectMethodHandleDesc` | A nominal descriptor for a direct `MethodHandle`.
    `interface` | `MethodHandleDesc` | A nominal descriptor for a `MethodHandle` constant.
    `interface` | `MethodTypeDesc` | A nominal descriptor for a MethodType constant.

    Classes in java.lang.constant that implement ConstantDesc
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `DynamicConstantDesc<T>` | A nominal descriptor for a dynamic constant (one described in the constant pool with `Constant_Dynamic_info`.)

    Fields in java.lang.constant declared as ConstantDesc
    Modifier and Type | Field | Description
    --- | --- | ---
    `static ConstantDesc` | ConstantDescs.`NULL` | Nominal descriptor representing the constant `null`

    Methods in java.lang.constant that return ConstantDesc
    Modifier and Type | Method | Description
    --- | --- | ---
    `ConstantDesc[]` | DynamicCallSiteDesc.`bootstrapArgs()` | Returns `ConstantDesc`s describing the bootstrap arguments for the `invokedynamic`.
    `ConstantDesc[]` | DynamicConstantDesc.`bootstrapArgs()` | Returns the bootstrap arguments for this constant.
    `static <T> ConstantDesc` | DynamicConstantDesc.`ofCanonical​(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs)` | Returns a nominal descriptor for a dynamic constant, transforming it into a more specific type if the constant bootstrap is a well-known one and a more specific nominal descriptor type (e.g., ClassDesc) is available.

    Methods in java.lang.constant that return types with arguments of type ConstantDesc
    Modifier and Type | Method | Description
    --- | --- | ---
    `List<ConstantDesc>` | DynamicConstantDesc.`bootstrapArgsList()` | Returns the bootstrap arguments for this constant as an immutable `List`.
    `Optional<? extends ConstantDesc>` | Constable.`describeConstable()` | Returns an `Optional` containing the nominal descriptor for this instance, if one can be constructed, or an empty `Optional` if one cannot be constructed.

    Methods in java.lang.constant with parameters of type ConstantDesc
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DynamicCallSiteDesc` | DynamicCallSiteDesc.`of​(DirectMethodHandleDesc bootstrapMethod, String invocationName, MethodTypeDesc invocationType, ConstantDesc... bootstrapArgs)` | Creates a nominal descriptor for an `invokedynamic` call site.
    `static <T> DynamicConstantDesc<T>` | DynamicConstantDesc.`of​(DirectMethodHandleDesc bootstrapMethod, ConstantDesc... bootstrapArgs)` | Returns a nominal descriptor for a dynamic constant whose name parameter is `ConstantDescs.DEFAULT_NAME`, and whose type parameter is always the same as the bootstrap method return type.
    `static <T> ConstantDesc` | DynamicConstantDesc.`ofCanonical​(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc[] bootstrapArgs)` | Returns a nominal descriptor for a dynamic constant, transforming it into a more specific type if the constant bootstrap is a well-known one and a more specific nominal descriptor type (e.g., ClassDesc) is available.
    `static <T> DynamicConstantDesc<T>` | DynamicConstantDesc.`ofNamed​(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)` | Returns a nominal descriptor for a dynamic constant.
    `DynamicCallSiteDesc` | 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.

    Constructors in java.lang.constant with parameters of type ConstantDesc
    Constructor | Description
    --- | ---
    `DynamicConstantDesc​(DirectMethodHandleDesc bootstrapMethod, String constantName, ClassDesc constantType, ConstantDesc... bootstrapArgs)` | Creates a nominal descriptor for a dynamic constant.

  - ### Uses of ConstantDesc in java.lang.invoke

    Classes in java.lang.invoke that implement ConstantDesc
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `VarHandle.VarHandleDesc` | A nominal descriptor for a `VarHandle` constant.