# Interface DirectMethodHandleDesc

All Superinterfaces:
  `ConstantDesc, MethodHandleDesc`

public sealed interface DirectMethodHandleDesc extends MethodHandleDesc
A nominal descriptor for a direct `MethodHandle`. A DirectMethodHandleDesc corresponds to a `Constant_MethodHandle_info` entry in the constant pool of a classfile.

Since:
  12

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static enum`
  `DirectMethodHandleDesc.Kind`
  Kinds of method handles that can be described with DirectMethodHandleDesc.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `isOwnerInterface()`
  Indicates if the method is declared by an interface
  `DirectMethodHandleDesc.Kind`
  `kind()`
  Returns the `kind` of the method handle described by this nominal descriptor.
  `String`
  `lookupDescriptor()`
  Returns the lookup descriptor of the method handle described by this descriptor, after adjusting for the invocation mode.
  `String`
  `methodName()`
  Returns the name of the method or field described by this nominal descriptor.
  `ClassDesc`
  `owner()`
  Returns a `ClassDesc` describing the class declaring the method or field described by this nominal descriptor.
  `int`
  `refKind()`
  Returns the `refKind` of the method handle described by this nominal reference, as defined by `MethodHandleInfo`.

  ### Methods declared in interface MethodHandleDesc

  `asType, equals, invocationType, resolveConstantDesc`
  Modifier and Type
  Method
  Description
  `default MethodHandleDesc`
  `asType(MethodTypeDesc type)`
  Returns a MethodHandleDesc that describes this method handle adapted to a different type, as if by `MethodHandle.asType(MethodType)`.
  `boolean`
  `equals(Object o)`
  Compares the specified object with this descriptor for equality.
  `MethodTypeDesc`
  `invocationType()`
  Returns a `MethodTypeDesc` describing the invocation type of the method handle described by this nominal descriptor.
  `MethodHandle`
  `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.

- ## Method Details

  - ### kind

    DirectMethodHandleDesc.Kind kind()
    Returns the `kind` of the method handle described by this nominal descriptor.
    Returns:
      the `DirectMethodHandleDesc.Kind`

  - ### refKind

    int refKind()
    Returns the `refKind` of the method handle described by this nominal reference, as defined by `MethodHandleInfo`.
    Returns:
      the reference kind

  - ### isOwnerInterface

    boolean isOwnerInterface()
    Indicates if the method is declared by an interface
    Returns:
      true if the method is declared by an interface

  - ### owner

    ClassDesc owner()
    Returns a `ClassDesc` describing the class declaring the method or field described by this nominal descriptor.
    Returns:
      the class declaring the method or field

  - ### methodName

    String methodName()
    Returns the name of the method or field described by this nominal descriptor. For constructors, returns the reserved name "<init>".
    Returns:
      the name of the method or field

  - ### lookupDescriptor

    String lookupDescriptor()
    Returns the lookup descriptor of the method handle described by this descriptor, after adjusting for the invocation mode. This will correspond to either a method type descriptor string (for methods and constructors), or a field descriptor string (for field access method handles). The lookup descriptor string is in the same format as accepted by `MethodHandleDesc.of(Kind, ClassDesc, String, String)`.
    Returns:
      the lookup descriptor string