Package groovy.lang

Class MetaMethod

All Implemented Interfaces:
MetaMember, Cloneable
Direct Known Subclasses:
CachedMethod, CallSiteAwareMetaMethod, ClosureMetaMethod, ClosureStaticMetaMethod, GeneratedMetaMethod, MetaClassImpl.MetaConstructor, MixinInstanceMetaMethod, ReflectionMetaMethod, TransformMetaMethod

public abstract class MetaMethod extends ParameterTypes implements MetaMember, Cloneable
Represents a Method on a Java object a little like Method except without using reflection to invoke the method
  • Field Details

    • EMPTY_ARRAY

      public static final MetaMethod[] EMPTY_ARRAY
  • Constructor Details

    • MetaMethod

      public MetaMethod()
      Constructor for a metamethod with an empty parameter list.
    • MetaMethod

      public MetaMethod(Class[] pt)
      Constructor with a list of parameter classes.
      Parameters:
      pt - A list of parameters types
  • Method Details

    • getModifiers

      public abstract int getModifiers()
      Returns the modifiers of this method.
      Specified by:
      getModifiers in interface MetaMember
      Returns:
      modifiers as an int.
    • getName

      public abstract String getName()
      Returns the name of this method.
      Specified by:
      getName in interface MetaMember
      Returns:
      name of this method
    • getReturnType

      public abstract Class getReturnType()
      Returns the return type for this method.
      Returns:
      the return type of this method
    • getDeclaringClass

      public abstract CachedClass getDeclaringClass()
      Gets the class where this method is declared.
      Returns:
      class of this method
    • checkParameters

      @Deprecated public void checkParameters(Class[] arguments)
      Deprecated.
      Checks that the given parameters are valid to call this method.
      Parameters:
      arguments - the arguments to check
      Throws:
      IllegalArgumentException - if the parameters are not valid
    • isMethod

      public boolean isMethod(MetaMethod method)
      Returns true if this metamethod represents the same method as the argument.
      Parameters:
      method - A metaMethod instance
      Returns:
      true if method is for the same method as this method, false otherwise.
    • equal

      protected static boolean equal(CachedClass[] a, Class[] b)
    • equal

      protected static boolean equal(CachedClass[] a, CachedClass[] b)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • clone

      public Object clone()
      Overrides:
      clone in class Object
    • isAbstract

      public boolean isAbstract()
      Returns whether this method is abstract.
      Returns:
      true if this method is abstract
    • isDefault

      public boolean isDefault()
      Returns whether this method is interface-default.
      Returns:
      true if this method is default
    • isSame

      public final boolean isSame(MetaMethod method)
      Determines if the given method has the same name, parameters, return type and modifiers but may be defined on another type.
      Parameters:
      method - the method to compare against
    • isCacheable

      public boolean isCacheable()
      Returns whether this object is cacheable.
    • getDescriptor

      public String getDescriptor()
      Returns a descriptor of this method based on the return type and parameters of this method.
    • getSignature

      public String getSignature()
      Returns the signature of this method.
      Returns:
      The signature of this method
    • getMopName

      public String getMopName()
    • invoke

      public abstract Object invoke(Object object, Object[] arguments)
      Invokes this method.
      Parameters:
      object - The object this method should be invoked on
      arguments - The arguments for the method if applicable
      Returns:
      The return value of the invocation
    • doMethodInvoke

      public Object doMethodInvoke(Object object, Object[] arguments)
      Invokes the method this object represents.

      This method is not final but it should be overloaded very carefully and only by generated methods there is no guarantee that it will be called.

      Parameters:
      object - The object the method is to be called at.
      arguments - Arguments for the method invocation.
      Returns:
      The return value of the invoked method.
    • processDoMethodInvokeException

      public final RuntimeException processDoMethodInvokeException(Exception e, Object object, Object[] arguments)
      Called when an exception occurs while invoking this method.