# Interface MethodTypeEntry

All Superinterfaces:
  `LoadableConstantEntry, PoolEntry`

public sealed interface MethodTypeEntry extends LoadableConstantEntry
Models a `CONSTANT_MethodType_info` structure, or a symbolic reference to a method type, in the constant pool of a `class` file.

The use of a `MethodTypeEntry` is modeled by a `MethodTypeDesc`. Conversions are through `ConstantPoolBuilder.methodTypeEntry(MethodTypeDesc)` and `asSymbol()`.

A method type entry is composite:

    MethodTypeEntry(Utf8Entry descriptor)

where `descriptor` is a method descriptor string.

See Java Virtual Machine Specification:
  4.4.9 The `CONSTANT_MethodType_info` Structure
Since:
  24

## Field Summary

### Fields declared in interface 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`
Modifier and Type
Field
Description
`static final int`
`TAG_CLASS`
The tag for `CONSTANT_Class` constant kind.
`static final int`
`TAG_DOUBLE`
The tag for `CONSTANT_Double` constant kind.
`static final int`
`TAG_DYNAMIC`
The tag for `CONSTANT_Dynamic` constant kind.
`static final int`
`TAG_FIELDREF`
The tag for `CONSTANT_Fieldref` constant kind.
`static final int`
`TAG_FLOAT`
The tag for `CONSTANT_Float` constant kind.
`static final int`
`TAG_INTEGER`
The tag for `CONSTANT_Integer` constant kind.
`static final int`
`TAG_INTERFACE_METHODREF`
The tag for `CONSTANT_InterfaceMethodref` constant kind.
`static final int`
`TAG_INVOKE_DYNAMIC`
The tag for `CONSTANT_InvokeDynamic` constant kind.
`static final int`
`TAG_LONG`
The tag for `CONSTANT_Long` constant kind.
`static final int`
`TAG_METHOD_HANDLE`
The tag for `CONSTANT_MethodHandle` constant kind.
`static final int`
`TAG_METHOD_TYPE`
The tag for `CONSTANT_MethodType` constant kind.
`static final int`
`TAG_METHODREF`
The tag for `CONSTANT_Methodref` constant kind.
`static final int`
`TAG_MODULE`
The tag for `CONSTANT_Module` constant kind.
`static final int`
`TAG_NAME_AND_TYPE`
The tag for `CONSTANT_NameAndType` constant kind.
`static final int`
`TAG_PACKAGE`
The tag for `CONSTANT_Package` constant kind.
`static final int`
`TAG_STRING`
The tag for `CONSTANT_String` constant kind.
`static final int`
`TAG_UTF8`
The tag for `CONSTANT_Utf8` constant kind.

## Method Summary

Modifier and Type
Method
Description
`MethodTypeDesc`
`asSymbol()`
Returns a symbolic descriptor for the method type.
`default ConstantDesc`
`constantValue()`
Returns a symbolic descriptor of this constant.
`Utf8Entry`
`descriptor()`
Returns the method descriptor string.
`boolean`
`matches(MethodTypeDesc desc)`
Returns whether this entry describes the given method type.

### Methods declared in interface LoadableConstantEntry

`typeKind`
Modifier and Type
Method
Description
`default TypeKind`
`typeKind()`
Returns the data type of this constant.

### Methods declared in interface PoolEntry

`constantPool, index, tag, width`
Modifier and Type
Method
Description
`ConstantPool`
`constantPool()`
Returns the constant pool this entry is from.
`int`
`index()`
Returns the index within the constant pool corresponding to this entry.
`int`
`tag()`
Returns the constant pool tag that describes the type of this entry.
`int`
`width()`
Returns the number of constant pool slots this entry consumes.

## 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)`

### descriptor

Utf8Entry descriptor()
Returns the method descriptor string.

Returns:
  the method descriptor string

### asSymbol

MethodTypeDesc asSymbol()
Returns a symbolic descriptor for the method type.

API Note:
  If only symbol equivalence is desired, `matches` should be used. It requires reduced parsing and can improve `class` file reading performance.
Returns:
  a symbolic descriptor for the method type

### matches

boolean matches(MethodTypeDesc desc)
Returns whether this entry describes the given method type.

Parameters:
  `desc` - the method type descriptor
Returns:
  whether this entry describes the given method type
Since:
  25