Uses of Class
java.lang.invoke.MethodHandle
Package
Description
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 interfaces and classes that are used to link an
invokedynamic
call site.Contains the linker for ordinary Java objects.
Contains interfaces and classes needed by language runtimes to implement
their own language-specific object models and type conversions.
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.
Contains classes that make using Dynalink more convenient by providing
basic implementations of some classes as well as various utilities.
-
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
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 <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. -
Uses of MethodHandle in jdk.dynalink
Modifier and TypeMethodDescriptionvoid
RelinkableCallSite.initialize
(MethodHandle relinkAndInvoke) Invoked by dynamic linker to initialize the relinkable call site by setting a relink-and-invoke method handle.void
RelinkableCallSite.relink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) This method will be called by the dynamic linker every time the call site is relinked (but seeRelinkableCallSite.resetAndRelink(GuardedInvocation, MethodHandle)
for an exception).void
RelinkableCallSite.resetAndRelink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) This method will be called by the dynamic linker every time the call site is relinked and the linker wishes the call site to throw away any prior linkage state (that is how it differs fromRelinkableCallSite.relink(GuardedInvocation, MethodHandle)
). -
Uses of MethodHandle in jdk.dynalink.beans
Modifier and TypeMethodDescriptionMissingMemberHandlerFactory.createMissingMemberHandler
(LinkRequest linkRequest, LinkerServices linkerServices) Returns a method handle suitable for implementing missing member behavior for a particular link request. -
Uses of MethodHandle in jdk.dynalink.linker
Modifier and TypeMethodDescriptionLinkerServices.asType
(MethodHandle handle, MethodType fromType) Similar toasType(MethodType)
except it also hooks in method handles produced by all availableGuardingTypeConverterFactory
implementations, providing for language-specific type coercing of parameters.MethodTypeConversionStrategy.asType
(MethodHandle target, MethodType newType) Converts a method handle to a new type.default MethodHandle
LinkerServices.asTypeLosslessReturn
(MethodHandle handle, MethodType fromType) Similar toLinkerServices.asType(MethodHandle, MethodType)
except it treats return value type conversion specially.GuardedInvocation.compose
(MethodHandle fallback) Composes the invocation, guard, switch points, and the exception into a composite method handle that knows how to fall back when the guard fails or the invocation is invalidated.GuardedInvocation.compose
(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback) Composes the invocation, guard, switch points, and the exception into a composite method handle that knows how to fall back when the guard fails or the invocation is invalidated.LinkerServices.filterInternalObjects
(MethodHandle target) Modifies the method handle so that any parameters that can receive potentially internal language runtime objects will have a filter added on them to prevent them from escaping, potentially by wrapping them.GuardedInvocation.getGuard()
Returns the guard method handle.GuardedInvocation.getInvocation()
Returns the invocation method handle.LinkerServices.getTypeConverter
(Class<?> sourceType, Class<?> targetType) Given a source and target type, returns a method handle that converts between them.MethodHandleTransformer.transform
(MethodHandle target) Transforms a method handle.Modifier and TypeMethodDescriptionLinkerServices.asType
(MethodHandle handle, MethodType fromType) Similar toasType(MethodType)
except it also hooks in method handles produced by all availableGuardingTypeConverterFactory
implementations, providing for language-specific type coercing of parameters.MethodTypeConversionStrategy.asType
(MethodHandle target, MethodType newType) Converts a method handle to a new type.default MethodHandle
LinkerServices.asTypeLosslessReturn
(MethodHandle handle, MethodType fromType) Similar toLinkerServices.asType(MethodHandle, MethodType)
except it treats return value type conversion specially.GuardedInvocation.compose
(MethodHandle fallback) Composes the invocation, guard, switch points, and the exception into a composite method handle that knows how to fall back when the guard fails or the invocation is invalidated.GuardedInvocation.compose
(MethodHandle guardFallback, MethodHandle switchpointFallback, MethodHandle catchFallback) Composes the invocation, guard, switch points, and the exception into a composite method handle that knows how to fall back when the guard fails or the invocation is invalidated.GuardedInvocation.filterArguments
(int pos, MethodHandle... filters) Applies argument filters to both the invocation and the guard (if it exists and has at leastpos + 1
parameters) withMethodHandles.filterArguments(MethodHandle, int, MethodHandle...)
.LinkerServices.filterInternalObjects
(MethodHandle target) Modifies the method handle so that any parameters that can receive potentially internal language runtime objects will have a filter added on them to prevent them from escaping, potentially by wrapping them.GuardedInvocation.replaceMethods
(MethodHandle newInvocation, MethodHandle newGuard) Creates a new guarded invocation with different methods, preserving the switch point.MethodHandleTransformer.transform
(MethodHandle target) Transforms a method handle.ModifierConstructorDescriptionGuardedInvocation
(MethodHandle invocation) Creates a new unconditional guarded invocation.GuardedInvocation
(MethodHandle invocation, MethodHandle guard) Creates a new guarded invocation, with a guard method handle.GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint) Creates a new guarded invocation, with both a guard method handle and a switch point that can be used to invalidate it.GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint[] switchPoints, Class<? extends Throwable> exception) Creates a new guarded invocation, with a guard method handle, any number of switch points that can be used to invalidate it, and an exception that if thrown when invoked also invalidates it.GuardedInvocation
(MethodHandle invocation, MethodHandle guard, SwitchPoint switchPoint, Class<? extends Throwable> exception) Creates a new guarded invocation, with a guard method handle, a switch point that can be used to invalidate it, and an exception that if thrown when invoked also invalidates it.GuardedInvocation
(MethodHandle invocation, SwitchPoint switchPoint) Creates a new guarded invocation that can be invalidated by a switch point. -
Uses of MethodHandle in jdk.dynalink.linker.support
Modifier and TypeMethodDescriptionstatic 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.Lookup.findGetter
(Class<?> refc, String name, Class<?> type) Performs aMethodHandles.Lookup.findGetter(Class, String, Class)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
andNoSuchFieldException
into aNoSuchFieldError
.static MethodHandle
Lookup.findOwnSpecial
(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes) Given a lookup, finds usingLookup.findSpecial(Class, String, MethodType)
a method on that lookup's class.Lookup.findOwnSpecial
(String name, Class<?> rtype, Class<?>... ptypes) Finds usingLookup.findSpecial(Class, String, MethodType)
a method on that lookup's class.static MethodHandle
Lookup.findOwnStatic
(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes) Given a lookup, finds usingLookup.findStatic(Class, String, MethodType)
a method on that lookup's class.Lookup.findOwnStatic
(String name, Class<?> rtype, Class<?>... ptypes) Finds usingLookup.findStatic(Class, String, MethodType)
a method on that lookup's class.Lookup.findSpecial
(Class<?> declaringClass, String name, MethodType type) Performs aMethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)
on the underlying lookup.Lookup.findStatic
(Class<?> declaringClass, String name, MethodType type) Performs aMethodHandles.Lookup.findStatic(Class, String, MethodType)
on the underlying lookup.Lookup.findVirtual
(Class<?> declaringClass, String name, MethodType type) Performs aMethodHandles.Lookup.findVirtual(Class, String, MethodType)
on the underlying lookup.static MethodHandle
Guards.getClassGuard
(Class<?> clazz) Creates a guard method that tests its only argument for being of an exact particular class.static MethodHandle
Guards.getIdentityGuard
(Object obj) Creates a guard method that tests its only argument for being referentially identical to another objectstatic MethodHandle
Guards.getInstanceOfGuard
(Class<?> clazz) Creates a guard method that tests its only argument for being an instance of a particular class.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.isNotNull()
Returns a guard that tests whether the first argument is not null.static MethodHandle
Guards.isNull()
Returns a guard that tests whether the first argument is null.static MethodHandle
Guards.isOfClass
(Class<?> clazz, MethodType type) Creates a guard method handle with arguments of a specified type, but with boolean return value.DefaultInternalObjectFilter.transform
(MethodHandle target) static MethodHandle
Lookup.unreflect
(MethodHandles.Lookup lookup, Method m) Performs aMethodHandles.Lookup.unreflect(Method)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
.Performs aMethodHandles.Lookup.unreflect(Method)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
.static MethodHandle
Lookup.unreflectConstructor
(MethodHandles.Lookup lookup, Constructor<?> c) Performs aMethodHandles.Lookup.unreflectConstructor(Constructor)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
.Lookup.unreflectConstructor
(Constructor<?> c) Performs aMethodHandles.Lookup.unreflectConstructor(Constructor)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
.Lookup.unreflectGetter
(Field f) Performs aMethodHandles.Lookup.unreflectGetter(Field)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
.Lookup.unreflectSetter
(Field f) Performs aMethodHandles.Lookup.unreflectSetter(Field)
, converting any encounteredIllegalAccessException
into anIllegalAccessError
.Modifier and TypeMethodDescriptionstatic 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.DefaultInternalObjectFilter.transform
(MethodHandle target) ModifierConstructorDescriptionDefaultInternalObjectFilter
(MethodHandle parameterFilter, MethodHandle returnFilter) Creates a new filter. -
Uses of MethodHandle in jdk.dynalink.support
Modifier and TypeMethodDescriptionvoid
AbstractRelinkableCallSite.initialize
(MethodHandle relinkAndInvoke) void
ChainedCallSite.relink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) void
SimpleRelinkableCallSite.relink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) void
ChainedCallSite.resetAndRelink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke) void
SimpleRelinkableCallSite.resetAndRelink
(GuardedInvocation guardedInvocation, MethodHandle relinkAndInvoke)