# 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.constant
Classes and interfaces to represent nominal descriptors for run-time entities such as classes or method handles, and classfile entities such as constant pool entries or `invokedynamic` call sites.
java.lang.foreign
Provides low-level access to memory and functions outside the Java runtime.
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.
java.util
Contains the collections framework, some internationalization support classes, a service loader, properties, random number generation, string parsing and scanning classes, base64 encoding and decoding, a bit array, and several miscellaneous utility classes.
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.

- ## 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.
  Methods in java.lang with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `MethodHandle`
  StringTemplate.Processor.Linkage.`linkage(List<String> fragments, MethodType type)`
  This method creates a `MethodHandle` that when invoked with arguments of those specified in `type` returns a result that equals that returned by the template processor's process method.

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

  Methods in java.lang.constant that return MethodType
  Modifier and Type
  Method
  Description
  `MethodType`
  MethodTypeDesc.`resolveConstantDesc(MethodHandles.Lookup lookup)`
  Resolves this descriptor reflectively, emulating the resolution behavior of JVMS 5.4.3 and the access control behavior of JVMS 5.4.4.

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

  Methods in java.lang.foreign that return MethodType
  Modifier and Type
  Method
  Description
  `MethodType`
  FunctionDescriptor.`toMethodType()`
  Returns the method type consisting of the carrier types of the layouts in this function descriptor.

- ## 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 of the given method descriptor (JVMS 4.3.3).
  `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.
  `final 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`
  TemplateRuntime.`newLargeStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type)`
  String template bootstrap method for creating large string templates, i.e., when the number of value slots exceeds `StringConcatFactory.MAX_INDY_CONCAT_ARG_SLOTS`PREVIEW.
  `static CallSite`
  TemplateRuntime.`newStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, String... fragments)`
  String template bootstrap method for creating string templates.
  `static CallSite`
  TemplateRuntime.`processStringTemplate(MethodHandles.Lookup lookup, String name, MethodType type, MethodHandle processorGetter, String... fragments)`
  String template bootstrap method for static final processors.
  `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 java.util

  Methods in java.util with parameters of type MethodType
  Modifier and Type
  Method
  Description
  `MethodHandle`
  FormatProcessor.`linkage(List<String> fragments, MethodType type)`
  Constructs a `MethodHandle` that when supplied with the values from a `StringTemplate`PREVIEW will produce a result equivalent to that provided by `FormatProcessor.process(StringTemplate)`PREVIEW.

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