MethodTypeDesc (Java SE 15 & JDK 15)
Description: declaration: module: java.base, package: java.lang.constant, interface: MethodTypeDesc
Keywords: java.lang.constant.MethodTypeDesc interface

Module java.base
Package java.lang.constant

# Interface MethodTypeDesc

All Superinterfaces:
  `ConstantDesc`, `TypeDescriptor`, `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`

    public interface MethodTypeDesc
    extends ConstantDesc, TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>

A nominal descriptor for a MethodType constant.

API Note:
  In the future, if the Java language permits, MethodTypeDesc may become a `sealed` interface, which would prohibit subclassing except by explicitly permitted types. Non-platform classes should not implement MethodTypeDesc directly.
Since:
  12

- ## Nested Class Summary

  ## Nested classes/interfaces declared in interface java.lang.invoke.TypeDescriptor

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

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `MethodTypeDesc` | `changeParameterType​(int index, ClassDesc paramType)` | Returns a MethodTypeDesc that is identical to this one, except that a single parameter type has been changed to the specified type.
  `MethodTypeDesc` | `changeReturnType​(ClassDesc returnType)` | Returns a MethodTypeDesc that is identical to this one, except with the specified return type.
  `default String` | `descriptorString()` | Returns the method type descriptor string.
  `default String` | `displayDescriptor()` | Returns a human-readable descriptor for this method type, using the canonical names for parameter and return types.
  `MethodTypeDesc` | `dropParameterTypes​(int start, int end)` | Returns a MethodTypeDesc that is identical to this one, except that a range of parameter types have been removed.
  `boolean` | `equals​(Object o)` | Compares the specified object with this descriptor for equality.
  `MethodTypeDesc` | `insertParameterTypes​(int pos, ClassDesc... paramTypes)` | Returns a MethodTypeDesc that is identical to this one, except that a range of additional parameter types have been inserted.
  `static MethodTypeDesc` | `of​(ClassDesc returnDesc, ClassDesc... paramDescs)` | Returns a MethodTypeDesc given the return type and parameter types.
  `static MethodTypeDesc` | `ofDescriptor​(String descriptor)` | Creates a MethodTypeDesc given a method descriptor string.
  `ClassDesc[]` | `parameterArray()` | Returns the parameter types as an array.
  `int` | `parameterCount()` | Returns the number of parameters of the method type described by this MethodTypeDesc.
  `List<ClassDesc>` | `parameterList()` | Returns the parameter types as an immutable `List`.
  `ClassDesc` | `parameterType​(int index)` | Returns the parameter type of the `index`'th parameter of the method type described by this MethodTypeDesc.
  `ClassDesc` | `returnType()` | Gets the return type of the method type described by this MethodTypeDesc.

  ### Methods declared in interface java.lang.constant.ConstantDesc

  `resolveConstantDesc`

- ## Method Details

  - ### ofDescriptor

    static MethodTypeDesc ofDescriptor​(String descriptor)
    Creates a MethodTypeDesc given a method descriptor string.
    Parameters:
      `descriptor` - a method descriptor string
    Returns:
      a MethodTypeDesc describing the desired method type
    Throws:
      `NullPointerException` - if the argument is `null`
      `IllegalArgumentException` - if the descriptor string is not a valid method descriptor
    See Java Virtual Machine Specification:
      4.3.3 Method Descriptors

  - ### of

    static MethodTypeDesc of​(ClassDesc returnDesc, ClassDesc... paramDescs)
    Returns a MethodTypeDesc given the return type and parameter types.
    Parameters:
      `returnDesc` - a ClassDesc describing the return type
      `paramDescs` - ClassDescs describing the argument types
    Returns:
      a MethodTypeDesc describing the desired method type
    Throws:
      `NullPointerException` - if any argument or its contents are `null`
      `IllegalArgumentException` - if any element of `paramDescs` is a `ClassDesc` for `void`

  - ### returnType

    ClassDesc returnType()
    Gets the return type of the method type described by this MethodTypeDesc.
    Specified by:
      `returnType` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Returns:
      a `ClassDesc` describing the return type of the method type

  - ### parameterCount

    int parameterCount()
    Returns the number of parameters of the method type described by this MethodTypeDesc.
    Specified by:
      `parameterCount` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Returns:
      the number of parameters

  - ### parameterType

    ClassDesc parameterType​(int index)
    Returns the parameter type of the `index`'th parameter of the method type described by this MethodTypeDesc.
    Specified by:
      `parameterType` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Parameters:
      `index` - the index of the parameter to retrieve
    Returns:
      a `ClassDesc` describing the desired parameter type
    Throws:
      `IndexOutOfBoundsException` - if the index is outside the half-open range {[0, parameterCount())}

  - ### parameterList

    List<ClassDesc> parameterList()
    Returns the parameter types as an immutable `List`.
    Specified by:
      `parameterList` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Returns:
      a `List` of `ClassDesc` describing the parameter types

  - ### parameterArray

    ClassDesc[] parameterArray()
    Returns the parameter types as an array.
    Specified by:
      `parameterArray` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Returns:
      an array of `ClassDesc` describing the parameter types

  - ### changeReturnType

    MethodTypeDesc changeReturnType​(ClassDesc returnType)
    Returns a MethodTypeDesc that is identical to this one, except with the specified return type.
    Specified by:
      `changeReturnType` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Parameters:
      `returnType` - a `ClassDesc` describing the new return type
    Returns:
      a MethodTypeDesc describing the desired method type
    Throws:
      `NullPointerException` - if the argument is `null`

  - ### changeParameterType

    MethodTypeDesc changeParameterType​(int index, ClassDesc paramType)
    Returns a MethodTypeDesc that is identical to this one, except that a single parameter type has been changed to the specified type.
    Specified by:
      `changeParameterType` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Parameters:
      `index` - the index of the parameter to change
      `paramType` - a `ClassDesc` describing the new parameter type
    Returns:
      a MethodTypeDesc describing the desired method type
    Throws:
      `NullPointerException` - if any argument is `null`
      `IndexOutOfBoundsException` - if the index is outside the half-open range {[0, parameterCount)}

  - ### dropParameterTypes

    MethodTypeDesc dropParameterTypes​(int start, int end)
    Returns a MethodTypeDesc that is identical to this one, except that a range of parameter types have been removed.
    Specified by:
      `dropParameterTypes` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Parameters:
      `start` - the index of the first parameter to remove
      `end` - the index after the last parameter to remove
    Returns:
      a MethodTypeDesc describing the desired method type
    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

    MethodTypeDesc insertParameterTypes​(int pos, ClassDesc... paramTypes)
    Returns a MethodTypeDesc that is identical to this one, except that a range of additional parameter types have been inserted.
    Specified by:
      `insertParameterTypes` in interface `TypeDescriptor.OfMethod<ClassDesc,​MethodTypeDesc>`
    Parameters:
      `pos` - the index at which to insert the first inserted parameter
      `paramTypes` - `ClassDesc`s describing the new parameter types to insert
    Returns:
      a MethodTypeDesc describing the desired method type
    Throws:
      `NullPointerException` - if any argument or its contents are `null`
      `IndexOutOfBoundsException` - if `pos` is outside the closed range {[0, parameterCount]}
      `IllegalArgumentException` - if any element of `paramTypes` is a `ClassDesc` for `void`

  - ### descriptorString

    default String descriptorString()
    Returns the method type descriptor string.
    Specified by:
      `descriptorString` in interface `TypeDescriptor`
    Returns:
      the method type descriptor string
    See Java Virtual Machine Specification:
      4.3.3 Method Descriptors

  - ### displayDescriptor

    default String displayDescriptor()
    Returns a human-readable descriptor for this method type, using the canonical names for parameter and return types.
    Returns:
      the human-readable descriptor for this method type

  - ### equals

    boolean equals​(Object o)
    Compares the specified object with this descriptor for equality. Returns `true` if and only if the specified object is also a MethodTypeDesc both have the same arity, their return types are equal, and each pair of corresponding parameter types are equal.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `o` - the other object
    Returns:
      whether this descriptor is equal to the other object
    See Also:
      `Object.hashCode()`, `HashMap`