MetaMethod (groovy 2.5.0 API)
Date: 2018-05-27

Package: groovy.lang

## [Java] Class MetaMethod

- groovy.lang.MetaMethod

- All Implemented Interfaces and Traits:
    Cloneable

      public abstract class MetaMethod
      extends ParameterTypes

  Represents a Method on a Java object a little like Method except without using reflection to invoke the method

  Authors:
    James Strachan
    Alex Tkachman

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static MetaMethod[]` | `EMPTY_ARRAY` |

  - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class ParameterTypes` | `isVargsMethod, nativeParamTypes, parameterTypes`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `MetaMethod ()` Constructor for a metamethod with an empty parameter list
    `MetaMethod (Class[] pt)` Constructor wit a list of parameter classes

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `void` | `checkParameters(Class[] arguments)` Checks that the given parameters are valid to call this method
    `` | `Object` | `clone()`
    `` | `Object` | `doMethodInvoke(Object object, Object[] argumentArray)` Invokes the method this object represents.
    `` | `protected static boolean` | `equal(CachedClass[] a, Class[] b)`
    `` | `protected static boolean` | `equal(CachedClass[] a, CachedClass[] b)`
    `` | `CachedClass` | `getDeclaringClass()` Gets the class where this method is declared
    `` | `String` | `getDescriptor()` Return a descriptor of this method based on the return type and parameters of this method.
    `` | `int` | `getModifiers()` Returns the modifiers for this method
    `` | `String` | `getMopName()`
    `` | `String` | `getName()` Returns the name of the method represented by this class
    `` | `Class` | `getReturnType()` Access the return type for this method
    `` | `String` | `getSignature()` Returns the signature of this method
    `` | `Object` | `invoke(Object object, Object[] arguments)` Invoke this method
    `` | `boolean` | `isAbstract()` Returns whether or not this method is abstract.
    `` | `boolean` | `isCacheable()` Returns whether this object is cacheable
    `` | `boolean` | `isMethod(MetaMethod method)` Returns true if this this metamethod represents the same method as the argument.
    `` | `boolean` | `isPrivate()` Returns whether or not this method is private.
    `` | `boolean` | `isProtected()` Returns whether or not this method is protected.
    `` | `boolean` | `isPublic()` Returns whether or not this method is public.
    `` | `boolean` | `isSame(MetaMethod method)` @param method the method to compare against
    `` | `boolean` | `isStatic()` Returns whether or not this method is static.
    `` | `RuntimeException` | `processDoMethodInvokeException(Exception e, Object object, Object[] argumentArray)` This method is called when an exception occurs while invoking this method.
    `` | `String` | `toString()` Returns a string representation of this method

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class ParameterTypes` | `coerceArgumentsToClasses, correctArguments, getNativeParameterTypes, getPT, getParameterTypes, isValidExactMethod, isValidExactMethod, isValidMethod, isValidMethod, isVargsMethod, isVargsMethod, setParametersTypes`
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Field Detail

    - #### public static final MetaMethod[] EMPTY_ARRAY

  - ### Constructor Detail

    - #### public MetaMethod()

      Constructor for a metamethod with an empty parameter list

    - #### public MetaMethod(Class[] pt)

      Constructor wit a list of parameter classes

      Parameters:
        `pt` - A list of parameters types

  - ### Method Detail

    - #### public void checkParameters(Class[] arguments)

      Checks that the given parameters are valid to call this method

      throws:
        IllegalArgumentException if the parameters are not valid
      Parameters:
        `arguments` - the arguments to check

    - #### public Object clone()

    - #### public Object doMethodInvoke(Object object, Object[] argumentArray)

      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.
        `argumentArray` - Arguments for the method invocation.
      Returns:
        The return value of the invoked method.

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

    - #### protected static boolean equal(CachedClass[] a, CachedClass[] b)

    - #### public CachedClass getDeclaringClass()

      Gets the class where this method is declared

      Returns:
        class of this method

    - #### public String getDescriptor()

      Return a descriptor of this method based on the return type and parameters of this method.

    - #### public int getModifiers()

      Returns the modifiers for this method

      Returns:
        modifiers as an int.

    - #### public String getMopName()

    - #### public String getName()

      Returns the name of the method represented by this class

      Returns:
        name of this method

    - #### public Class getReturnType()

      Access the return type for this method

      Returns:
        the return type of this method

    - #### public String getSignature()

      Returns the signature of this method

      Returns:
        The signature of this method

    - #### public Object invoke(Object object, Object[] arguments)

      Invoke 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

    - #### public boolean isAbstract()

      Returns whether or not this method is abstract.

      Returns:
        true if this method is abstract

    - #### public boolean isCacheable()

      Returns whether this object is cacheable

    - #### public boolean isMethod(MetaMethod method)

      Returns true if this 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.

    - #### public final boolean isPrivate()

      Returns whether or not this method is private.

      Returns:
        true if this method is private

    - #### public final boolean isProtected()

      Returns whether or not this method is protected.

      Returns:
        true if this method is protected

    - #### public final boolean isPublic()

      Returns whether or not this method is public.

      Returns:
        true if this method is public

    - #### public final boolean isSame(MetaMethod method)

      Parameters:
        `method` - the method to compare against
      Returns:
        true if the given method has the same name, parameters, return type and modifiers but may be defined on another type

    - #### public boolean isStatic()

      Returns whether or not this method is static.

      Returns:
        true if this method is static

    - #### public final RuntimeException processDoMethodInvokeException(Exception e, Object object, Object[] argumentArray)

      This method is called when an exception occurs while invoking this method.

    - #### public String toString()

      Returns a string representation of this method