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<?>argumentsThe list of arguments to be handed over to the bootstrap method.private MethodDescription.InDefinedShapebootstrapMethodThe bootstrap method.private java.lang.StringmethodNameThe internal name of the method that is to be bootstrapped.private java.util.List<? extends TypeDescription>parameterTypesThe parameter types of the method to be bootstrapped.private TypeDescriptionreturnTypeThe 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.Sizeapply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext)Applies the stack manipulation that is described by this instance.booleanisValid()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:
isValidin 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:
applyin 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.
-
-