# Interface MethodHandleEntry

All Superinterfaces:
  `LoadableConstantEntry`, `PoolEntry`

public sealed interface MethodHandleEntry extends LoadableConstantEntry
Models a `CONSTANT_MethodHandle_info` structure, or a symbolic reference to a method handle, in the constant pool of a `class` file. The method handle directly accesses an accessible method, field, or constructor.

The use of a `MethodHandleEntry` is modeled by a `DirectMethodHandleDesc`. Conversions are through `ConstantPoolBuilder.methodHandleEntry(DirectMethodHandleDesc)` and `asSymbol()`.

A method handle entry is composite:

    MethodHandleEntry(
        int refKind,
        MemberRefEntry reference
    )

where `refKind` is in the range `[1, 9]`.

See Java Virtual Machine Specification:
  4.4.8 The `CONSTANT_MethodHandle_info` Structure
Since:
  24
See Also:
  - `ConstantPoolBuilder::methodHandleEntry`

- ## Field Summary

  ### Fields declared in interface java.lang.classfile.constantpool.PoolEntry

  `TAG_CLASS, TAG_DOUBLE, TAG_DYNAMIC, TAG_FIELDREF, TAG_FLOAT, TAG_INTEGER, TAG_INTERFACE_METHODREF, TAG_INVOKE_DYNAMIC, TAG_LONG, TAG_METHOD_HANDLE, TAG_METHOD_TYPE, TAG_METHODREF, TAG_MODULE, TAG_NAME_AND_TYPE, TAG_PACKAGE, TAG_STRING, TAG_UTF8`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DirectMethodHandleDesc`
  `asSymbol()`
  Returns a symbolic descriptor for this method handle.
  `default ConstantDesc`
  `constantValue()`
  Returns a symbolic descriptor of this constant.
  `int`
  `kind()`
  Returns the reference kind of this method handle (JVMS 4.4.8).
  `MemberRefEntry`
  `reference()`
  Returns the constant pool entry describing the field or method, according to the reference kind.

  ### Methods declared in interface java.lang.classfile.constantpool.LoadableConstantEntry

  `typeKind`

  ### Methods declared in interface java.lang.classfile.constantpool.PoolEntry

  `constantPool, index, tag, width`

- ## Method Details

  - ### constantValue

    default ConstantDesc constantValue()
    Returns a symbolic descriptor of this constant.

    This is equivalent to `asSymbol()`.

    Specified by:
      `constantValue` in interface `LoadableConstantEntry`
    Returns:
      a symbolic descriptor of this constant
    See Also:
      - `ConstantPoolBuilder.loadableConstantEntry(ConstantDesc)`

  - ### kind

    int kind()
    Returns the reference kind of this method handle (JVMS 4.4.8).
    Returns:
      the reference kind of this method handle (JVMS 4.4.8)
    See Also:
      - Reference kinds

  - ### reference

    MemberRefEntry reference()
    Returns the constant pool entry describing the field or method, according to the reference kind.
    Returns:
      the constant pool entry describing the field or method, according to the reference kind

  - ### asSymbol

    DirectMethodHandleDesc asSymbol()
    Returns a symbolic descriptor for this method handle.
    Returns:
      a symbolic descriptor for this method handle
    See Also:
      - `ConstantPoolBuilder::methodHandleEntry(DirectMethodHandleDesc)`