# Uses of Class
java.lang.invoke.MethodType

Packages that use MethodType
Package
Description
java.lang
Provides classes that are fundamental to the design of the Java programming language.
java.lang.invoke
The `java.lang.invoke` package provides low-level primitives for interacting with the Java Virtual Machine.
java.lang.runtime
The `java.lang.runtime` package provides low-level runtime support for the Java language.
jdk.dynalink
Contains interfaces and classes that are used to link an `invokedynamic` call site.
jdk.dynalink.linker
Contains interfaces and classes needed by language runtimes to implement their own language-specific object models and type conversions.
jdk.dynalink.linker.support
Contains classes that make it more convenient for language runtimes to implement their own language-specific object models and type conversions by providing basic implementations of some classes as well as various utilities.
jdk.incubator.foreign
Classes to support low-level and efficient foreign memory/function access, directly from Java.

- ## Uses of MethodType in java.lang

  Methods in java.lang that return MethodType
  Modifier and Type
  Method
  Description
  `default MethodType`
  StackWalker.StackFrame.`getMethodType()`
  Returns the `MethodType` representing the parameter types and the return type for the method represented by this stack frame.

- ## Uses of MethodType in java.lang.invoke

  Methods in java.lang.invoke that return MethodType
  Modifier and Type
  Method
  Description
  `final MethodType`
  VarHandle.`accessModeType(VarHandle.AccessMode accessMode)`
  Obtains the access mode type for this VarHandle and a given access mode.
  `MethodType`
  MethodType.`appendParameterTypes(Class<?>... ptypesToInsert)`
  Finds or creates a method type with additional parameter types.
  `MethodType`
  MethodType.`appendParameterTypes(List<Class<?>> ptypesToInsert)`
  Finds or creates a method type with additional parameter types.
  `MethodType`
  MethodType.`changeParameterType(int num, Class<?> nptype)`
  Finds or creates a method type with a single different parameter type.
  `MethodType`
  MethodType.`changeReturnType(Class<?> nrtype)`
  Finds or creates a method type with a different return type.
  `MethodType`
  MethodType.`dropParameterTypes(int start, int end)`
  Finds or creates a method type with some parameter types omitted.
  `MethodType`
  MethodType.`erase()`
  Erases all reference types to `Object`.
  `static MethodType`
  MethodType.`fromMethodDescriptorString(String descriptor, ClassLoader loader)`
  Finds or creates an instance of a method type, given the spelling of its bytecode descriptor.
  `MethodType`
  MethodType.`generic()`
  Converts all types, both reference and primitive, to `Object`.
  `static MethodType`
  MethodType.`genericMethodType(int objectArgCount)`
  Finds or creates a method type whose components are all `Object`.
  `static MethodType`
  MethodType.`genericMethodType(int objectArgCount, boolean finalArray)`
  Finds or creates a method type whose components are `Object` with an optional trailing `Object[]` array.
  `MethodType`
  MethodHandleInfo.`getMethodType()`
  Returns the nominal type of the cracked symbolic reference, expressed as a method type.
  `MethodType`
  MethodType.`insertParameterTypes(int num, Class<?>... ptypesToInsert)`
  Finds or creates a method type with additional parameter types.
  `MethodType`
  MethodType.`insertParameterTypes(int num, List<Class<?>> ptypesToInsert)`
  Finds or creates a method type with additional parameter types.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype)`
  Finds or creates a method type with the given components.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype, Class<?> ptype0)`
  Finds or creates a method type with the given components.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype, Class<?>[] ptypes)`
  Finds or creates an instance of the given method type.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype, Class<?> ptype0, Class<?>... ptypes)`
  Finds or creates a method type with the given components.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype, MethodType ptypes)`
  Finds or creates a method type with the given components.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype, List<Class<?>> ptypes)`
  Finds or creates a method type with the given components.
  `MethodType`
  CallSite.`type()`
  Returns the type of this call site's target.
  `MethodType`
  MethodHandle.`type()`
  Reports the type of this method handle.
  `MethodType`
  MethodType.`unwrap()`
  Converts all wrapper types to their corresponding primitive types.
  `MethodType`
  MethodType.`wrap()`
  Converts all primitive types to their corresponding wrapper types.
  Methods in java.lang.invoke with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `static CallSite`
  LambdaMetafactory.`altMetafactory(MethodHandles.Lookup caller, String interfaceMethodName, MethodType factoryType, Object... args)`
  Facilitates the creation of simple "function objects" that implement one or more interfaces by delegation to a provided `MethodHandle`, after appropriate type adaptation and partial evaluation of arguments.
  `MethodHandle`
  MethodHandle.`asType(MethodType newType)`
  Produces an adapter method handle which adapts the type of the current method handle to a new type.
  `MethodHandle`
  MethodHandles.Lookup.`bind(Object receiver, String name, MethodType type)`
  Produces an early-bound method handle for a non-static method.
  `static MethodHandle`
  MethodHandles.`empty(MethodType type)`
  Produces a method handle of the requested type which ignores any arguments, does nothing, and returns a suitable default depending on the return type.
  `static MethodHandle`
  MethodHandles.`exactInvoker(MethodType type)`
  Produces a special invoker method handle which can be used to invoke any method handle of the given type, as if by `invokeExact`.
  `static MethodHandle`
  MethodHandles.`explicitCastArguments(MethodHandle target, MethodType newType)`
  Produces a method handle which adapts the type of the given method handle to a new type by pairwise argument and return type conversion.
  `MethodHandle`
  MethodHandles.Lookup.`findConstructor(Class<?> refc, MethodType type)`
  Produces a method handle which creates an object and initializes it, using the constructor of the specified type.
  `MethodHandle`
  MethodHandles.Lookup.`findSpecial(Class<?> refc, String name, MethodType type, Class<?> specialCaller)`
  Produces an early-bound method handle for a virtual method.
  `MethodHandle`
  MethodHandles.Lookup.`findStatic(Class<?> refc, String name, MethodType type)`
  Produces a method handle for a static method.
  `MethodHandle`
  MethodHandles.Lookup.`findVirtual(Class<?> refc, String name, MethodType type)`
  Produces a method handle for a virtual method.
  `static MethodHandle`
  MethodHandles.`invoker(MethodType type)`
  Produces a special invoker method handle which can be used to invoke any method handle compatible with the given type, as if by `invoke`.
  `static CallSite`
  StringConcatFactory.`makeConcat(MethodHandles.Lookup lookup, String name, MethodType concatType)`
  Facilitates the creation of optimized String concatenation methods, that can be used to efficiently concatenate a known number of arguments of known types, possibly after type adaptation and partial evaluation of arguments.
  `static CallSite`
  StringConcatFactory.`makeConcatWithConstants(MethodHandles.Lookup lookup, String name, MethodType concatType, String recipe, Object... constants)`
  Facilitates the creation of optimized String concatenation methods, that can be used to efficiently concatenate a known number of arguments of known types, possibly after type adaptation and partial evaluation of arguments.
  `static CallSite`
  LambdaMetafactory.`metafactory(MethodHandles.Lookup caller, String interfaceMethodName, MethodType factoryType, MethodType interfaceMethodType, MethodHandle implementation, MethodType dynamicMethodType)`
  Facilitates the creation of simple "function objects" that implement one or more interfaces by delegation to a provided `MethodHandle`, after appropriate type adaptation and partial evaluation of arguments.
  `static MethodType`
  MethodType.`methodType(Class<?> rtype, MethodType ptypes)`
  Finds or creates a method type with the given components.
  `static MethodHandle`
  MethodHandles.`permuteArguments(MethodHandle target, MethodType newType, int... reorder)`
  Produces a method handle which adapts the calling sequence of the given method handle to a new type, by reordering the arguments.
  `static MethodHandle`
  MethodHandles.`spreadInvoker(MethodType type, int leadingArgCount)`
  Produces a method handle which will invoke any method handle of the given `type`, with a given number of trailing arguments replaced by a single trailing `Object[]` array.
  `static String`
  MethodHandleInfo.`toString(int kind, Class<?> defc, String name, MethodType type)`
  Returns a string representation for a `MethodHandleInfo`, given the four parts of its symbolic reference.
  `static MethodHandle`
  MethodHandles.`varHandleExactInvoker(VarHandle.AccessMode accessMode, MethodType type)`
  Produces a special invoker method handle which can be used to invoke a signature-polymorphic access mode method on any VarHandle whose associated access mode type is compatible with the given type.
  `static MethodHandle`
  MethodHandles.`varHandleInvoker(VarHandle.AccessMode accessMode, MethodType type)`
  Produces a special invoker method handle which can be used to invoke a signature-polymorphic access mode method on any VarHandle whose associated access mode type is compatible with the given type.
  Constructors in java.lang.invoke with parameters of type MethodType
  Modifier
  Constructor
  Description
  `protected`
  `ConstantCallSite(MethodType targetType, MethodHandle createTargetHook)`
  Creates a call site with a permanent target, possibly bound to the call site itself.
  ``
  `MutableCallSite(MethodType type)`
  Creates a blank call site object with the given method type.
  ``
  `VolatileCallSite(MethodType type)`
  Creates a call site with a volatile binding to its target.

- ## Uses of MethodType in java.lang.runtime

  Methods in java.lang.runtime with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `static CallSite`
  SwitchBootstraps.`enumSwitch(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels)`
  Bootstrap method for linking an `invokedynamic` call site that implements a `switch` on a target of an enum type.
  `static CallSite`
  SwitchBootstraps.`typeSwitch(MethodHandles.Lookup lookup, String invocationName, MethodType invocationType, Object... labels)`
  Bootstrap method for linking an `invokedynamic` call site that implements a `switch` on a target of a reference type.

- ## Uses of MethodType in jdk.dynalink

  Methods in jdk.dynalink that return MethodType
  Modifier and Type
  Method
  Description
  `final MethodType`
  CallSiteDescriptor.`getMethodType()`
  The type of the method at the call site.
  Methods in jdk.dynalink with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `final CallSiteDescriptor`
  CallSiteDescriptor.`changeMethodType(MethodType newMethodType)`
  Finds or creates a call site descriptor that only differs in its method type from this descriptor.
  `protected CallSiteDescriptor`
  CallSiteDescriptor.`changeMethodTypeInternal(MethodType newMethodType)`
  Finds or creates a call site descriptor that only differs in its method type from this descriptor.
  Constructors in jdk.dynalink with parameters of type MethodType
  Modifier
  Constructor
  Description
  ``
  `CallSiteDescriptor(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)`
  Creates a new call site descriptor.

- ## Uses of MethodType in jdk.dynalink.linker

  Methods in jdk.dynalink.linker with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `GuardedInvocation`
  GuardedInvocation.`asType(MethodType newType)`
  Changes the type of the invocation, as if `MethodHandle.asType(MethodType)` was applied to its invocation and its guard, if it has one (with return type changed to boolean, and parameter count potentially truncated for the guard).
  `GuardedInvocation`
  GuardedInvocation.`asType(LinkerServices linkerServices, MethodType newType)`
  Changes the type of the invocation, as if `LinkerServices.asType(MethodHandle, MethodType)` was applied to its invocation and its guard, if it has one (with return type changed to boolean, and parameter count potentially truncated for the guard).
  `MethodHandle`
  LinkerServices.`asType(MethodHandle handle, MethodType fromType)`
  Similar to `MethodHandle.asType(MethodType)` except it also hooks in method handles produced by all available `GuardingTypeConverterFactory` implementations, providing for language-specific type coercing of parameters.
  `MethodHandle`
  MethodTypeConversionStrategy.`asType(MethodHandle target, MethodType newType)`
  Converts a method handle to a new type.
  `default MethodHandle`
  LinkerServices.`asTypeLosslessReturn(MethodHandle handle, MethodType fromType)`
  Similar to `LinkerServices.asType(MethodHandle, MethodType)` except it treats return value type conversion specially.
  `GuardedInvocation`
  GuardedInvocation.`asTypeSafeReturn(LinkerServices linkerServices, MethodType newType)`
  Changes the type of the invocation, as if `LinkerServices.asTypeLosslessReturn(MethodHandle, MethodType)` was applied to its invocation and `LinkerServices.asType(MethodHandle, MethodType)` applied to its guard, if it has one (with return type changed to boolean, and parameter count potentially truncated for the guard).

- ## Uses of MethodType in jdk.dynalink.linker.support

  Methods in jdk.dynalink.linker.support with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `static MethodHandle`
  Guards.`asType(MethodHandle test, MethodType type)`
  Takes a method handle intended to be used as a guard, and adapts it to the requested type, but returning a boolean.
  `static MethodHandle`
  Guards.`asType(LinkerServices linkerServices, MethodHandle test, MethodType type)`
  Takes a method handle intended to be used as a guard, and adapts it to the requested type, but returning a boolean.
  `MethodHandle`
  Lookup.`findSpecial(Class<?> declaringClass, String name, MethodType type)`
  Performs a `MethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)` on the underlying lookup.
  `MethodHandle`
  Lookup.`findStatic(Class<?> declaringClass, String name, MethodType type)`
  Performs a `MethodHandles.Lookup.findStatic(Class, String, MethodType)` on the underlying lookup.
  `MethodHandle`
  Lookup.`findVirtual(Class<?> declaringClass, String name, MethodType type)`
  Performs a `MethodHandles.Lookup.findVirtual(Class, String, MethodType)` on the underlying lookup.
  `static MethodHandle`
  Guards.`isArray(int pos, MethodType type)`
  Creates a method handle that returns true if the argument in the specified position is a Java array.
  `static MethodHandle`
  Guards.`isInstance(Class<?> clazz, int pos, MethodType type)`
  Creates a method handle with arguments of a specified type, but with boolean return value.
  `static MethodHandle`
  Guards.`isInstance(Class<?> clazz, MethodType type)`
  Creates a method handle with arguments of a specified type, but with boolean return value.
  `static MethodHandle`
  Guards.`isOfClass(Class<?> clazz, MethodType type)`
  Creates a guard method handle with arguments of a specified type, but with boolean return value.

- ## Uses of MethodType in jdk.incubator.foreign

  Methods in jdk.incubator.foreign with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `MethodHandle`
  CLinker.`downcallHandle(MethodType type, FunctionDescriptor function)`
  Obtains a foreign method handle, with the given type and featuring the given function descriptor, which can be used to call a target foreign function at an address.
  `MethodHandle`
  CLinker.`downcallHandle(Addressable symbol, MethodType type, FunctionDescriptor function)`
  Obtains a foreign method handle, with the given type and featuring the given function descriptor, which can be used to call a target foreign function at the given address.
  `MethodHandle`
  CLinker.`downcallHandle(Addressable symbol, SegmentAllocator allocator, MethodType type, FunctionDescriptor function)`
  Obtain a foreign method handle, with the given type and featuring the given function descriptor, which can be used to call a target foreign function at the given address.