# Interface TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>, M extends TypeDescriptor.OfMethod<F,M>>

Type Parameters:
  `F` - the type representing field type descriptors
  `M` - the class implementing TypeDescriptor.OfMethod

All Superinterfaces:
  `TypeDescriptor`

All Known Subinterfaces:
  `MethodTypeDesc`

All Known Implementing Classes:
  `MethodType`

Enclosing interface:
  `TypeDescriptor`

public static interface TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>, M extends TypeDescriptor.OfMethod<F,M>> extends TypeDescriptor
An entity that has a method type descriptor Method descriptors conforming to JVMS 4.3.3 can be described nominally via `MethodType::describeConstable`; otherwise they cannot be described nominally.

See Java Virtual Machine Specification:
  4.3.2 Field Descriptors
  4.3.3 Method Descriptors
Since:
  12

## Nested Class Summary

### Nested classes/interfaces declared in interface TypeDescriptor

`TypeDescriptor.OfField<F>, TypeDescriptor.OfMethod<F,M>`

## Method Summary

Modifier and Type
Method
Description
`M`
`changeParameterType(int index, F paramType)`
Return a method descriptor that is identical to this one, except that a single parameter type has been changed to the specified type.
`M`
`changeReturnType(F newReturn)`
Return a method descriptor that is identical to this one, except that the return type has been changed to the specified type
`M`
`dropParameterTypes(int start, int end)`
Return a method descriptor that is identical to this one, except that a range of parameter types have been removed.
`M`
`insertParameterTypes(int pos, F... paramTypes)`
Return a method descriptor that is identical to this one, except that a range of additional parameter types have been inserted.
`F[]`
`parameterArray()`
Return an array of field descriptors for the parameter types of the method type described by this descriptor
`int`
`parameterCount()`
Return the number of parameters in the method type
`List<F>`
`parameterList()`
Return an immutable list of field descriptors for the parameter types of the method type described by this descriptor
`F`
`parameterType(int i)`
Return a field descriptor describing the requested parameter of the method type described by this descriptor
`F`
`returnType()`
Return a field descriptor describing the return type of the method type described by this descriptor

### Methods declared in interface TypeDescriptor

`descriptorString`

## Method Details

### parameterCount

int parameterCount()
Return the number of parameters in the method type

Returns:
  the number of parameters

### parameterType

F parameterType(int i)
Return a field descriptor describing the requested parameter of the method type described by this descriptor

Parameters:
  `i` - the index of the parameter
Returns:
  a field descriptor for the requested parameter type
Throws:
  `IndexOutOfBoundsException` - if the index is outside the half-open range {[0, parameterCount)}

### returnType

F returnType()
Return a field descriptor describing the return type of the method type described by this descriptor

Returns:
  a field descriptor for the return type

### parameterArray

F[] parameterArray()
Return an array of field descriptors for the parameter types of the method type described by this descriptor

Returns:
  field descriptors for the parameter types

### parameterList

List<F> parameterList()
Return an immutable list of field descriptors for the parameter types of the method type described by this descriptor

Returns:
  field descriptors for the parameter types

### changeReturnType

M changeReturnType(F newReturn)
Return a method descriptor that is identical to this one, except that the return type has been changed to the specified type

Parameters:
  `newReturn` - a field descriptor for the new return type
Returns:
  the new method descriptor
Throws:
  `NullPointerException` - if any argument is `null`

### changeParameterType

M changeParameterType(int index, F paramType)
Return a method descriptor that is identical to this one, except that a single parameter type has been changed to the specified type.

Parameters:
  `index` - the index of the parameter to change
  `paramType` - a field descriptor describing the new parameter type
Returns:
  the new method descriptor
Throws:
  `NullPointerException` - if any argument is `null`
  `IndexOutOfBoundsException` - if the index is outside the half-open range {[0, parameterCount)}

### dropParameterTypes

M dropParameterTypes(int start, int end)
Return a method descriptor that is identical to this one, except that a range of parameter types have been removed.

Parameters:
  `start` - the index of the first parameter to remove
  `end` - the index after the last parameter to remove
Returns:
  the new method descriptor
Throws:
  `IndexOutOfBoundsException` - if `start` is outside the half-open range `[0, parameterCount)`, or `end` is outside the closed range `[0, parameterCount]`, or if `start > end`

### insertParameterTypes

M insertParameterTypes(int pos, F... paramTypes)
Return a method descriptor that is identical to this one, except that a range of additional parameter types have been inserted.

Parameters:
  `pos` - the index at which to insert the first inserted parameter
  `paramTypes` - field descriptors describing the new parameter types to insert
Returns:
  the new method descriptor
Throws:
  `NullPointerException` - if any argument is `null`
  `IndexOutOfBoundsException` - if `pos` is outside the closed range {[0, parameterCount]}