VarHandle.VarHandleDesc (Java SE 15 & JDK 15)
Description: declaration: module: java.base, package: java.lang.invoke, class: VarHandle, class: VarHandleDesc
Keywords: java.lang.invoke.VarHandle.VarHandleDesc class

Module java.base
Package java.lang.invoke

# Class VarHandle.VarHandleDesc

java.lang.Object
java.lang.constant.DynamicConstantDesc<VarHandle>
java.lang.invoke.VarHandle.VarHandleDesc

All Implemented Interfaces:
  `ConstantDesc`

Enclosing class:
  VarHandle

    public static final class VarHandle.VarHandleDesc
    extends DynamicConstantDesc<VarHandle>

A nominal descriptor for a `VarHandle` constant.

Since:
  12

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `static VarHandle.VarHandleDesc` | `ofArray​(ClassDesc arrayClass)` | Returns a VarHandle.VarHandleDesc corresponding to a `VarHandle` for an array type.
  `static VarHandle.VarHandleDesc` | `ofField​(ClassDesc declaringClass, String name, ClassDesc fieldType)` | Returns a VarHandle.VarHandleDesc corresponding to a `VarHandle` for an instance field.
  `static VarHandle.VarHandleDesc` | `ofStaticField​(ClassDesc declaringClass, String name, ClassDesc fieldType)` | Returns a VarHandle.VarHandleDesc corresponding to a `VarHandle` for a static field.
  `VarHandle` | `resolveConstantDesc​(MethodHandles.Lookup lookup)` | Resolves this descriptor reflectively, emulating the resolution behavior of JVMS 5.4.3 and the access control behavior of JVMS 5.4.4.
  `String` | `toString()` | Returns a compact textual description of this constant description.
  `ClassDesc` | `varType()` | Returns a `ClassDesc` describing the type of the variable described by this descriptor.

  ### Methods declared in class java.lang.constant.DynamicConstantDesc

  `bootstrapArgs, bootstrapArgsList, bootstrapMethod, constantName, constantType, equals, of, of, ofCanonical, ofNamed`

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

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

- ## Method Details

  - ### ofField

    public static VarHandle.VarHandleDesc ofField​(ClassDesc declaringClass, String name, ClassDesc fieldType)
    Returns a VarHandle.VarHandleDesc corresponding to a `VarHandle` for an instance field.
    Parameters:
      `name` - the unqualified name of the field
      `declaringClass` - a `ClassDesc` describing the declaring class, for field var handles
      `fieldType` - a `ClassDesc` describing the type of the field
    Returns:
      the VarHandle.VarHandleDesc
    Throws:
      `NullPointerException` - if any of the arguments are null
    See Java Virtual Machine Specification:
      4.2.2 Unqualified Names

  - ### ofStaticField

    public static VarHandle.VarHandleDesc ofStaticField​(ClassDesc declaringClass, String name, ClassDesc fieldType)
    Returns a VarHandle.VarHandleDesc corresponding to a `VarHandle` for a static field.
    Parameters:
      `name` - the unqualified name of the field
      `declaringClass` - a `ClassDesc` describing the declaring class, for field var handles
      `fieldType` - a `ClassDesc` describing the type of the field
    Returns:
      the VarHandle.VarHandleDesc
    Throws:
      `NullPointerException` - if any of the arguments are null
    See Java Virtual Machine Specification:
      4.2.2 Unqualified Names

  - ### ofArray

    public static VarHandle.VarHandleDesc ofArray​(ClassDesc arrayClass)
    Returns a VarHandle.VarHandleDesc corresponding to a `VarHandle` for an array type.
    Parameters:
      `arrayClass` - a `ClassDesc` describing the type of the array
    Returns:
      the VarHandle.VarHandleDesc
    Throws:
      `NullPointerException` - if any of the arguments are null

  - ### varType

    public ClassDesc varType()
    Returns a `ClassDesc` describing the type of the variable described by this descriptor.
    Returns:
      the variable type

  - ### resolveConstantDesc

    public VarHandle resolveConstantDesc​(MethodHandles.Lookup lookup) throws ReflectiveOperationException
    Description copied from interface: `ConstantDesc`
    Resolves this descriptor reflectively, emulating the resolution behavior of JVMS 5.4.3 and the access control behavior of JVMS 5.4.4. The resolution and access control context is provided by the `MethodHandles.Lookup` parameter. No caching of the resulting value is performed.
    Parameters:
      `lookup` - The `MethodHandles.Lookup` to provide name resolution and access control context
    Returns:
      the resolved constant value
    Throws:
      `ReflectiveOperationException` - if a class, method, or field could not be reflectively resolved in the course of resolution

  - ### toString

    public String toString()
    Returns a compact textual description of this constant description. For a field VarHandle, includes the owner, name, and type of the field, and whether it is static; for an array VarHandle, the name of the component type.
    Overrides:
      `toString` in class `DynamicConstantDesc<VarHandle>`
    Returns:
      A compact textual description of this descriptor