# 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.