Uses of Class
java.lang.invoke.MethodHandle
Package
Description
Provides classes that are fundamental to the design of the Java
programming language.
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.Provides low-level access to memory and functions outside the Java runtime.
The
java.lang.invoke
package provides low-level primitives for interacting
with the Java Virtual Machine.The
java.lang.runtime
package provides low-level runtime support
for the Java language.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.
-
Uses of MethodHandle in java.lang
Modifier and TypeMethodDescriptionStringTemplate.Processor.Linkage.linkage
(List<String> fragments, MethodType type) This method creates aMethodHandle
that when invoked with arguments of those specified intype
returns a result that equals that returned by the template processor's process method. -
Uses of MethodHandle in java.lang.constant
Modifier and TypeMethodDescriptionMethodHandleDesc.resolveConstantDesc
(MethodHandles.Lookup lookup) -
Uses of MethodHandle in java.lang.foreign
Modifier and TypeMethodDescriptionMemoryLayout.byteOffsetHandle
(MemoryLayout.PathElement... elements) Creates a method handle that computes the offset, in bytes, of the layout selected by the given layout path, where the initial layout in the path is this layout.Linker.downcallHandle
(FunctionDescriptor function, Linker.Option... options) Restricted.Creates a method handle that is used to call a foreign function with the given signature.Linker.downcallHandle
(MemorySegment address, FunctionDescriptor function, Linker.Option... options) Restricted.Creates a method handle that is used to call a foreign function with the given signature and address.MemoryLayout.scaleHandle()
Returns a method handle that can be used to invokeMemoryLayout.scale(long, long)
on this layout.MemoryLayout.sliceHandle
(MemoryLayout.PathElement... elements) Creates a method handle which, given a memory segment, returns a slice corresponding to the layout selected by the given layout path, where the initial layout in the path is this layout.Modifier and TypeMethodDescriptionLinker.upcallStub
(MethodHandle target, FunctionDescriptor function, Arena arena, Linker.Option... options) Restricted.Creates an upcall stub which can be passed to other foreign functions as a function pointer, associated with the given arena. -
Uses of MethodHandle in java.lang.invoke
Modifier and TypeMethodDescriptionstatic MethodHandle
MethodHandles.arrayConstructor
(Class<?> arrayClass) Produces a method handle constructing arrays of a desired type, as if by theanewarray
bytecode.static MethodHandle
MethodHandles.arrayElementGetter
(Class<?> arrayClass) Produces a method handle giving read access to elements of an array, as if by theaaload
bytecode.static MethodHandle
MethodHandles.arrayElementSetter
(Class<?> arrayClass) Produces a method handle giving write access to elements of an array, as if by theastore
bytecode.static MethodHandle
MethodHandles.arrayLength
(Class<?> arrayClass) Produces a method handle returning the length of an array, as if by thearraylength
bytecode.MethodHandle.asCollector
(int collectArgPos, Class<?> arrayType, int arrayLength) Makes an array-collecting method handle, which accepts a given number of positional arguments starting at a given position, and collects them into an array argument.MethodHandle.asCollector
(Class<?> arrayType, int arrayLength) Makes an array-collecting method handle, which accepts a given number of trailing positional arguments and collects them into an array argument.MethodHandle.asFixedArity()
Makes a fixed arity method handle which is otherwise equivalent to the current method handle.MethodHandle.asSpreader
(int spreadArgPos, Class<?> arrayType, int arrayLength) Makes an array-spreading method handle, which accepts an array argument at a given position and spreads its elements as positional arguments in place of the array.MethodHandle.asSpreader
(Class<?> arrayType, int arrayLength) Makes an array-spreading method handle, which accepts a trailing array argument and spreads its elements as positional 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.asVarargsCollector
(Class<?> arrayType) Makes a variable arity adapter which is able to accept any number of trailing positional arguments and collect them into an array argument.MethodHandles.Lookup.bind
(Object receiver, String name, MethodType type) Produces an early-bound method handle for a non-static method.Binds a valuex
to the first argument of a method handle, without invoking it.static MethodHandle
MethodHandles.catchException
(MethodHandle target, Class<? extends Throwable> exType, MethodHandle handler) Makes a method handle which adapts a target method handle, by running it inside an exception handler.static MethodHandle
MethodHandles.collectArguments
(MethodHandle target, int pos, MethodHandle filter) Adapts a target method handle by pre-processing a sub-sequence of its arguments with a filter (another method handle).static MethodHandle
Produces a method handle of the requested return type which returns the given constant value every time it is invoked.static MethodHandle
MethodHandles.countedLoop
(MethodHandle iterations, MethodHandle init, MethodHandle body) Constructs a loop that runs a given number of iterations.static MethodHandle
MethodHandles.countedLoop
(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body) Constructs a loop that counts over a range of numbers.static MethodHandle
MethodHandles.doWhileLoop
(MethodHandle init, MethodHandle body, MethodHandle pred) Constructs ado-while
loop from an initializer, a body, and a predicate.static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, Class<?>... valueTypes) Produces a method handle which will discard some dummy arguments before calling some other specified target method handle.static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, List<Class<?>> valueTypes) Produces a method handle which will discard some dummy arguments before calling some other specified target method handle.static MethodHandle
MethodHandles.dropArgumentsToMatch
(MethodHandle target, int skip, List<Class<?>> newTypes, int pos) Adapts a target method handle to match the given parameter type list.static MethodHandle
MethodHandles.dropReturn
(MethodHandle target) Drop the return value of the target handle (if any).abstract MethodHandle
CallSite.dynamicInvoker()
Produces a method handle equivalent to an invokedynamic instruction which has been linked to this call site.final MethodHandle
ConstantCallSite.dynamicInvoker()
Returns this call site's permanent target.final MethodHandle
MutableCallSite.dynamicInvoker()
Produces a method handle equivalent to an invokedynamic instruction which has been linked to this call site.final MethodHandle
VolatileCallSite.dynamicInvoker()
Produces a method handle equivalent to an invokedynamic instruction which has been linked to this call site.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 byinvokeExact
.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.static MethodHandle
MethodHandles.filterArguments
(MethodHandle target, int pos, MethodHandle... filters) Adapts a target method handle by pre-processing one or more of its arguments, each with its own unary filter function, and then calling the target with each pre-processed argument replaced by the result of its corresponding filter function.static MethodHandle
MethodHandles.filterReturnValue
(MethodHandle target, MethodHandle filter) Adapts a target method handle by post-processing its return value (if any) with a filter (another method handle).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.MethodHandles.Lookup.findGetter
(Class<?> refc, String name, Class<?> type) Produces a method handle giving read access to a non-static field.MethodHandles.Lookup.findSetter
(Class<?> refc, String name, Class<?> type) Produces a method handle giving write access to a non-static field.MethodHandles.Lookup.findSpecial
(Class<?> refc, String name, MethodType type, Class<?> specialCaller) Produces an early-bound method handle for a virtual method.MethodHandles.Lookup.findStatic
(Class<?> refc, String name, MethodType type) Produces a method handle for a static method.MethodHandles.Lookup.findStaticGetter
(Class<?> refc, String name, Class<?> type) Produces a method handle giving read access to a static field.MethodHandles.Lookup.findStaticSetter
(Class<?> refc, String name, Class<?> type) Produces a method handle giving write access to a static field.MethodHandles.Lookup.findVirtual
(Class<?> refc, String name, MethodType type) Produces a method handle for a virtual method.static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, int pos, MethodHandle combiner) Adapts a target method handle by pre-processing some of its arguments, starting at a given position, and then calling the target with the result of the pre-processing, inserted into the original sequence of arguments just before the folded arguments.static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, MethodHandle combiner) Adapts a target method handle by pre-processing some of its arguments, and then calling the target with the result of the pre-processing, inserted into the original sequence of arguments.abstract MethodHandle
CallSite.getTarget()
Returns the target method of the call site, according to the behavior defined by this call site's specific class.final MethodHandle
ConstantCallSite.getTarget()
Returns the target method of the call site, which behaves like afinal
field of theConstantCallSite
.final MethodHandle
MutableCallSite.getTarget()
Returns the target method of the call site, which behaves like a normal field of theMutableCallSite
.final MethodHandle
VolatileCallSite.getTarget()
Returns the target method of the call site, which behaves like avolatile
field of theVolatileCallSite
.static MethodHandle
MethodHandles.guardWithTest
(MethodHandle test, MethodHandle target, MethodHandle fallback) Makes a method handle which adapts a target method handle, by guarding it with a test, a boolean-valued method handle.SwitchPoint.guardWithTest
(MethodHandle target, MethodHandle fallback) Returns a method handle which always delegates either to the target or the fallback.static MethodHandle
Produces a method handle which returns its sole argument when invoked.static MethodHandle
MethodHandles.insertArguments
(MethodHandle target, int pos, Object... values) Provides a target method handle with one or more bound arguments in advance of the method handle's invocation.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 byinvoke
.static MethodHandle
MethodHandles.iteratedLoop
(MethodHandle iterator, MethodHandle init, MethodHandle body) Constructs a loop that ranges over the values produced by anIterator<T>
.static MethodHandle
MethodHandles.loop
(MethodHandle[]... clauses) Constructs a method handle representing a loop with several loop variables that are updated and checked upon each iteration.static MethodHandle
StringConcatFactory.makeConcatWithTemplate
(List<String> fragments, List<Class<?>> ptypes) Preview.Simplified concatenation method to facilitateStringTemplate
PREVIEW concatenation.static MethodHandle
StringConcatFactory.makeConcatWithTemplateGetters
(List<String> fragments, List<MethodHandle> getters, int maxSlots) Preview.This method creates aMethodHandle
expecting one input, the receiver of the supplied getters.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 giventype
, with a given number of trailing arguments replaced by a single trailingObject[]
array.static MethodHandle
MethodHandles.tableSwitch
(MethodHandle fallback, MethodHandle... targets) Creates a table switch method handle, which can be used to switch over a set of target method handles, based on a given target index, called selector.static MethodHandle
MethodHandles.throwException
(Class<?> returnType, Class<? extends Throwable> exType) Produces a method handle which will throw exceptions of the givenexType
.VarHandle.toMethodHandle
(VarHandle.AccessMode accessMode) Obtains a method handle bound to this VarHandle and the given access mode.static MethodHandle
MethodHandles.tryFinally
(MethodHandle target, MethodHandle cleanup) Makes a method handle that adapts atarget
method handle by wrapping it in atry-finally
block.Makes a direct method handle to m, if the lookup class has permission.MethodHandles.Lookup.unreflectConstructor
(Constructor<?> c) Produces a method handle for a reflected constructor.MethodHandles.Lookup.unreflectGetter
(Field f) Produces a method handle giving read access to a reflected field.MethodHandles.Lookup.unreflectSetter
(Field f) Produces a method handle giving write access to a reflected field.MethodHandles.Lookup.unreflectSpecial
(Method m, Class<?> specialCaller) Produces a method handle for a reflected method.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.static MethodHandle
MethodHandles.whileLoop
(MethodHandle init, MethodHandle pred, MethodHandle body) Constructs awhile
loop from an initializer, a body, and a predicate.MethodHandle.withVarargs
(boolean makeVarargs) Adapts this method handle to be variable arity if the boolean flag is true, else fixed arity.static MethodHandle
MethodHandleProxies.wrapperInstanceTarget
(Object x) Produces or recovers a target method handle which is behaviorally equivalent to the unique method of this wrapper instance.static MethodHandle
Produces a constant method handle of the requested return type which returns the default value for that type every time it is invoked.Modifier and TypeMethodDescriptionstatic List
<MethodHandle> StringConcatFactory.makeConcatWithTemplateCluster
(List<String> fragments, List<Class<?>> ptypes, int maxSlots) Preview.This method breaks up large concatenations into separateMethodHandles
based on the number of slots required perMethodHandle
.Modifier and TypeMethodDescriptionstatic <T> T
MethodHandleProxies.asInterfaceInstance
(Class<T> intfc, MethodHandle target) Produces an instance of the given single-method interface which redirects its calls to the given method handle.static MethodHandle
MethodHandles.catchException
(MethodHandle target, Class<? extends Throwable> exType, MethodHandle handler) Makes a method handle which adapts a target method handle, by running it inside an exception handler.static MethodHandle
MethodHandles.collectArguments
(MethodHandle target, int pos, MethodHandle filter) Adapts a target method handle by pre-processing a sub-sequence of its arguments with a filter (another method handle).static VarHandle
MethodHandles.collectCoordinates
(VarHandle target, int pos, MethodHandle filter) Adapts a target var handle by pre-processing a sub-sequence of its coordinate values with a filter (a method handle).static MethodHandle
MethodHandles.countedLoop
(MethodHandle iterations, MethodHandle init, MethodHandle body) Constructs a loop that runs a given number of iterations.static MethodHandle
MethodHandles.countedLoop
(MethodHandle start, MethodHandle end, MethodHandle init, MethodHandle body) Constructs a loop that counts over a range of numbers.static MethodHandle
MethodHandles.doWhileLoop
(MethodHandle init, MethodHandle body, MethodHandle pred) Constructs ado-while
loop from an initializer, a body, and a predicate.static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, Class<?>... valueTypes) Produces a method handle which will discard some dummy arguments before calling some other specified target method handle.static MethodHandle
MethodHandles.dropArguments
(MethodHandle target, int pos, List<Class<?>> valueTypes) Produces a method handle which will discard some dummy arguments before calling some other specified target method handle.static MethodHandle
MethodHandles.dropArgumentsToMatch
(MethodHandle target, int skip, List<Class<?>> newTypes, int pos) Adapts a target method handle to match the given parameter type list.static MethodHandle
MethodHandles.dropReturn
(MethodHandle target) Drop the return value of the target handle (if any).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.static MethodHandle
MethodHandles.filterArguments
(MethodHandle target, int pos, MethodHandle... filters) Adapts a target method handle by pre-processing one or more of its arguments, each with its own unary filter function, and then calling the target with each pre-processed argument replaced by the result of its corresponding filter function.static VarHandle
MethodHandles.filterCoordinates
(VarHandle target, int pos, MethodHandle... filters) Adapts a target var handle by pre-processing incoming coordinate values using unary filter functions.static MethodHandle
MethodHandles.filterReturnValue
(MethodHandle target, MethodHandle filter) Adapts a target method handle by post-processing its return value (if any) with a filter (another method handle).static VarHandle
MethodHandles.filterValue
(VarHandle target, MethodHandle filterToTarget, MethodHandle filterFromTarget) Adapts a target var handle by pre-processing incoming and outgoing values using a pair of filter functions.static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, int pos, MethodHandle combiner) Adapts a target method handle by pre-processing some of its arguments, starting at a given position, and then calling the target with the result of the pre-processing, inserted into the original sequence of arguments just before the folded arguments.static MethodHandle
MethodHandles.foldArguments
(MethodHandle target, MethodHandle combiner) Adapts a target method handle by pre-processing some of its arguments, and then calling the target with the result of the pre-processing, inserted into the original sequence of arguments.static MethodHandle
MethodHandles.guardWithTest
(MethodHandle test, MethodHandle target, MethodHandle fallback) Makes a method handle which adapts a target method handle, by guarding it with a test, a boolean-valued method handle.SwitchPoint.guardWithTest
(MethodHandle target, MethodHandle fallback) Returns a method handle which always delegates either to the target or the fallback.static MethodHandle
MethodHandles.insertArguments
(MethodHandle target, int pos, Object... values) Provides a target method handle with one or more bound arguments in advance of the method handle's invocation.static Object
ConstantBootstraps.invoke
(MethodHandles.Lookup lookup, String name, Class<?> type, MethodHandle handle, Object... args) Returns the result of invoking a method handle with the provided arguments.static MethodHandle
MethodHandles.iteratedLoop
(MethodHandle iterator, MethodHandle init, MethodHandle body) Constructs a loop that ranges over the values produced by anIterator<T>
.static MethodHandle
MethodHandles.loop
(MethodHandle[]... clauses) Constructs a method handle representing a loop with several loop variables that are updated and checked upon each iteration.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 providedMethodHandle
, after appropriate type adaptation and partial evaluation of arguments.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 <T extends Member>
TMethodHandles.reflectAs
(Class<T> expected, MethodHandle target) Performs an unchecked "crack" of a direct method handle.MethodHandles.Lookup.revealDirect
(MethodHandle target) Cracks a direct method handle created by this lookup object or a similar one.abstract void
CallSite.setTarget
(MethodHandle newTarget) Updates the target method of this call site, according to the behavior defined by this call site's specific class.final void
ConstantCallSite.setTarget
(MethodHandle ignore) Always throws anUnsupportedOperationException
.void
MutableCallSite.setTarget
(MethodHandle newTarget) Updates the target method of this call site, as a normal variable.void
VolatileCallSite.setTarget
(MethodHandle newTarget) Updates the target method of this call site, as a volatile variable.static MethodHandle
MethodHandles.tableSwitch
(MethodHandle fallback, MethodHandle... targets) Creates a table switch method handle, which can be used to switch over a set of target method handles, based on a given target index, called selector.static MethodHandle
MethodHandles.tryFinally
(MethodHandle target, MethodHandle cleanup) Makes a method handle that adapts atarget
method handle by wrapping it in atry-finally
block.static MethodHandle
MethodHandles.whileLoop
(MethodHandle init, MethodHandle pred, MethodHandle body) Constructs awhile
loop from an initializer, a body, and a predicate.ModifierConstructorDescriptionConstantCallSite
(MethodHandle target) Creates a call site with a permanent target.protected
ConstantCallSite
(MethodType targetType, MethodHandle createTargetHook) Creates a call site with a permanent target, possibly bound to the call site itself.MutableCallSite
(MethodHandle target) Creates a call site object with an initial target method handle.VolatileCallSite
(MethodHandle target) Creates a call site with a volatile binding to its target. -
Uses of MethodHandle in java.lang.runtime
Modifier and TypeMethodDescriptionstatic Object
ObjectMethods.bootstrap
(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type, Class<?> recordClass, String names, MethodHandle... getters) Bootstrap method to generate theObject.equals(Object)
,Object.hashCode()
, andObject.toString()
methods, based on a description of the component names and accessor methods, for eitherinvokedynamic
call sites or dynamic constant pool entries.static CallSite
TemplateRuntime.processStringTemplate
(MethodHandles.Lookup lookup, String name, MethodType type, MethodHandle processorGetter, String... fragments) String template bootstrap method for static final processors. -
Uses of MethodHandle in java.util
Modifier and TypeMethodDescriptionFormatProcessor.linkage
(List<String> fragments, MethodType type) Constructs aMethodHandle
that when supplied with the values from aStringTemplate
PREVIEW will produce a result equivalent to that provided byFormatProcessor.process(StringTemplate)
PREVIEW.