Class MethodInvocation.OfGenericMethod
java.lang.Object
net.bytebuddy.implementation.bytecode.member.MethodInvocation.OfGenericMethod
- All Implemented Interfaces:
MethodInvocation.WithImplicitInvocationTargetType, StackManipulation
- Enclosing class:
MethodInvocation
@Enhance
protected static class MethodInvocation.OfGenericMethod
extends Object
implements MethodInvocation.WithImplicitInvocationTargetType
A method invocation of a generically resolved method.
-
Nested Class Summary
Nested classes/interfaces inherited from interface StackManipulation
StackManipulation.AbstractBase, StackManipulation.Compound, StackManipulation.Illegal, StackManipulation.Simple, StackManipulation.Size, StackManipulation.Trivial -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final MethodInvocation.WithImplicitInvocationTargetTypeThe invocation of the method in its defined shape.private final TypeDescriptionThe generically resolved return type of the method. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedOfGenericMethod(TypeDescription targetType, MethodInvocation.WithImplicitInvocationTargetType invocation) Creates a generic method invocation. -
Method Summary
Modifier and TypeMethodDescriptionapply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext) Applies the stack manipulation that is described by this instance.dynamic(String methodName, TypeDescription returnType, List<? extends TypeDescription> methodType, List<? extends JavaConstant> arguments) Invokes the method as a bootstrap method to bind a call site with the given properties.booleanisValid()Determines if this stack manipulation is valid.protected static MethodInvocation.WithImplicitInvocationTargetTypeof(MethodDescription methodDescription, MethodInvocation.WithImplicitInvocationTargetType invocation) Creates a generic access dispatcher for a given method.Invokes the method via aMethodHandle.special(TypeDescription invocationTarget) Transforms this method invocation into a special invocation on the given type.virtual(TypeDescription invocationTarget) Transforms this method invocation into a virtual (or interface) method invocation on the given type.
-
Field Details
-
targetType
The generically resolved return type of the method. -
invocation
The invocation of the method in its defined shape.
-
-
Constructor Details
-
OfGenericMethod
protected OfGenericMethod(TypeDescription targetType, MethodInvocation.WithImplicitInvocationTargetType invocation) Creates a generic method invocation.- Parameters:
targetType- The generically resolved return type of the method.invocation- The invocation of the method in its defined shape.
-
-
Method Details
-
of
protected static MethodInvocation.WithImplicitInvocationTargetType of(MethodDescription methodDescription, MethodInvocation.WithImplicitInvocationTargetType invocation) Creates a generic access dispatcher for a given method.- Parameters:
methodDescription- The generically resolved return type of the method.invocation- The invocation of the method in its defined shape.- Returns:
- A method access dispatcher for the given method.
-
virtual
Transforms this method invocation into a virtual (or interface) method invocation on the given type.- Specified by:
virtualin interfaceMethodInvocation.WithImplicitInvocationTargetType- Parameters:
invocationTarget- The type on which the method is to be invoked virtually on.- Returns:
- A stack manipulation representing this method invocation.
-
special
Transforms this method invocation into a special invocation on the given type.- Specified by:
specialin interfaceMethodInvocation.WithImplicitInvocationTargetType- Parameters:
invocationTarget- The type on which the method is to be invoked specially on.- Returns:
- A stack manipulation representing this method invocation.
-
dynamic
public StackManipulation dynamic(String methodName, TypeDescription returnType, List<? extends TypeDescription> methodType, List<? extends JavaConstant> arguments) Invokes the method as a bootstrap method to bind a call site with the given properties. Note that the Java virtual machine currently only knows how to resolve bootstrap methods that link static methods or a constructor.- Specified by:
dynamicin interfaceMethodInvocation.WithImplicitInvocationTargetType- Parameters:
methodName- The name of the method to be bound.returnType- The return type of the method to be bound.methodType- The parameter types of the method to be bound.arguments- The arguments to be passed to the bootstrap method.- Returns:
- A stack manipulation that represents the dynamic method invocation.
-
onHandle
Invokes the method via aMethodHandle.- Specified by:
onHandlein interfaceMethodInvocation.WithImplicitInvocationTargetType- Parameters:
type- The type of invocation.- Returns:
- A stack manipulation that represents a method call of the specified method via a method handle.
-
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.
-