Class HandleInvocation
- java.lang.Object
-
- net.bytebuddy.implementation.bytecode.member.HandleInvocation
-
- All Implemented Interfaces:
StackManipulation
@Enhance public class HandleInvocation extends java.lang.Object implements StackManipulation
An exact invocation of a method handle with a polymorphic signature.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.StackManipulation
StackManipulation.Compound, StackManipulation.Illegal, StackManipulation.Size, StackManipulation.Trivial
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
INVOKE_EXACT
The name of theinvokeExact
method.private static java.lang.String
METHOD_HANDLE_NAME
The name of thejava.lang.invoke.MethodHandle
type.private JavaConstant.MethodType
methodType
The method type of the invoked handle.
-
Constructor Summary
Constructors Constructor Description HandleInvocation(JavaConstant.MethodType methodType)
Creates a public invocation of a method handle.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StackManipulation.Size
apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext)
Applies the stack manipulation that is described by this instance.boolean
isValid()
Determines if this stack manipulation is valid.
-
-
-
Field Detail
-
METHOD_HANDLE_NAME
private static final java.lang.String METHOD_HANDLE_NAME
The name of thejava.lang.invoke.MethodHandle
type.- See Also:
- Constant Field Values
-
INVOKE_EXACT
private static final java.lang.String INVOKE_EXACT
The name of theinvokeExact
method.- See Also:
- Constant Field Values
-
methodType
private final JavaConstant.MethodType methodType
The method type of the invoked handle.
-
-
Constructor Detail
-
HandleInvocation
public HandleInvocation(JavaConstant.MethodType methodType)
Creates a public invocation of a method handle.- Parameters:
methodType
- The method type of the invoked handle.
-
-
Method Detail
-
isValid
public boolean isValid()
Determines if this stack manipulation is valid.- Specified by:
isValid
in interfaceStackManipulation
- Returns:
- If
false
, this manipulation cannot be applied and should throw an exception.
-
apply
public StackManipulation.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext)
Applies the stack manipulation that is described by this instance.- Specified by:
apply
in interfaceStackManipulation
- Parameters:
methodVisitor
- The method visitor used to write the method implementation to.implementationContext
- The context of the current implementation.- Returns:
- The changes to the size of the operand stack that are implied by this stack manipulation.
-
-