Class MethodInvocation.DynamicInvocation
- java.lang.Object
-
- net.bytebuddy.implementation.bytecode.member.MethodInvocation.DynamicInvocation
-
- All Implemented Interfaces:
StackManipulation
- Enclosing class:
- MethodInvocation
@Enhance(includeSyntheticFields=true) protected class MethodInvocation.DynamicInvocation extends java.lang.Object implements StackManipulation
Performs a dynamic method invocation of the given method.
-
-
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 java.util.List<?>
arguments
The list of arguments to be handed over to the bootstrap method.private MethodDescription.InDefinedShape
bootstrapMethod
The bootstrap method.private java.lang.String
methodName
The internal name of the method that is to be bootstrapped.private java.util.List<? extends TypeDescription>
parameterTypes
The parameter types of the method to be bootstrapped.private TypeDescription
returnType
The return type of the method to be bootstrapped.
-
Constructor Summary
Constructors Constructor Description DynamicInvocation(java.lang.String methodName, TypeDescription returnType, java.util.List<? extends TypeDescription> parameterTypes, MethodDescription.InDefinedShape bootstrapMethod, java.util.List<?> arguments)
Creates a new dynamic method invocation.
-
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
-
methodName
private final java.lang.String methodName
The internal name of the method that is to be bootstrapped.
-
returnType
private final TypeDescription returnType
The return type of the method to be bootstrapped.
-
parameterTypes
private final java.util.List<? extends TypeDescription> parameterTypes
The parameter types of the method to be bootstrapped.
-
bootstrapMethod
private final MethodDescription.InDefinedShape bootstrapMethod
The bootstrap method.
-
arguments
private final java.util.List<?> arguments
The list of arguments to be handed over to the bootstrap method.
-
-
Constructor Detail
-
DynamicInvocation
public DynamicInvocation(java.lang.String methodName, TypeDescription returnType, java.util.List<? extends TypeDescription> parameterTypes, MethodDescription.InDefinedShape bootstrapMethod, java.util.List<?> arguments)
Creates a new dynamic method invocation.- Parameters:
methodName
- The internal name of the method that is to be bootstrapped.returnType
- The return type of the method to be bootstrapped.parameterTypes
- The type of the parameters to be bootstrapped.bootstrapMethod
- The bootstrap method.arguments
- The list of arguments to be handed over to the bootstrap method.
-
-
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.
-
-