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.
  • Field Details

  • Constructor Details

  • Method Details

    • of

      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

      public StackManipulation virtual(TypeDescription invocationTarget)
      Transforms this method invocation into a virtual (or interface) method invocation on the given type.
      Specified by:
      virtual in interface MethodInvocation.WithImplicitInvocationTargetType
      Parameters:
      invocationTarget - The type on which the method is to be invoked virtually on.
      Returns:
      A stack manipulation representing this method invocation.
    • special

      public StackManipulation special(TypeDescription invocationTarget)
      Transforms this method invocation into a special invocation on the given type.
      Specified by:
      special in interface MethodInvocation.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:
      dynamic in interface MethodInvocation.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 a MethodHandle.
      Specified by:
      onHandle in interface MethodInvocation.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:
      isValid in interface StackManipulation
      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 interface StackManipulation
      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.