# 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.