Package: org.codehaus.groovy.runtime.metaclass

## [Java] Class ClosureStaticMetaMethod

- org.codehaus.groovy.runtime.metaclass.ClosureStaticMetaMethod

- All Implemented Interfaces and Traits:
    ClosureInvokingMethod

      public class ClosureStaticMetaMethod
      extends MetaMethod
      implements ClosureInvokingMethod

  This class represents a MetaMethod that is a closure that pretends to be a static method. It is used by ExpandoMetaClass to allow addition of static methods defined as closures

  Since:
    01.1

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class MetaMethod` | `EMPTY_ARRAY`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `ClosureStaticMetaMethod(String name, Class declaringClass, Closure c)` Parameters: `name` - The name of the MetaMethod
    `ClosureStaticMetaMethod(String name, Class declaringClass, Closure c, Class[] paramTypes)` Constructs a new ClosureStaticMetaMethod with the specified parameter types.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public Closure` | `getClosure()` Retrieves the closure that is invoked by this MetaMethod
    `` | `public CachedClass` | `getDeclaringClass()` Returns the cached class that declares this meta method.
    `` | `public int` | `getModifiers()` Returns the modifiers for this meta method (PUBLIC | STATIC).
    `` | `public String` | `getName()` Returns the name of this static meta method.
    `` | `public Class` | `getReturnType()` Returns the return type of this method.
    `` | `public Object` | `invoke(Object object, Object[] arguments)` Invokes the static closure method with the given arguments.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class MetaMethod` | `checkParameters, clone, doMethodInvoke, equal, equal, getDeclaringClass, getDescriptor, getModifiers, getMopName, getName, getReturnType, getSignature, invoke, isAbstract, isCacheable, isDefault, isMethod, isSame, processDoMethodInvokeException, toString`
    `class ParameterTypes` | `coerceArgumentsToClasses, correctArguments, getNativeParameterTypes, getPT, getParameterTypes, isValidExactMethod, isValidExactMethod, isValidMethod, isValidMethod, isVargsMethod, isVargsMethod, setParametersTypes`

- - ### Constructor Detail

    - #### public ClosureStaticMetaMethod(String name, Class declaringClass, Closure c)

      Parameters:
        `name` - The name of the MetaMethod
        `declaringClass` - The class which declared the MetaMethod
        `c` - The closure that this ClosureMetaMethod will invoke when called

    - #### public ClosureStaticMetaMethod(String name, Class declaringClass, Closure c, Class[] paramTypes)

      Constructs a new ClosureStaticMetaMethod with the specified parameter types.

      Parameters:
        `name` - The name of the MetaMethod
        `declaringClass` - The class which declared the MetaMethod
        `c` - The closure that this ClosureStaticMetaMethod will invoke when called
        `paramTypes` - The parameter types for the closure method

  - ### Method Detail

    - #### public Closure getClosure()

      Retrieves the closure that is invoked by this MetaMethod

      Returns:
        The closure

    - #### public CachedClass getDeclaringClass()

      Returns the cached class that declares this meta method.

      Returns:
        the declaring class

    - #### public int getModifiers()

      Returns the modifiers for this meta method (PUBLIC | STATIC).

      Returns:
        the modifiers indicating this is a public static method

    - #### public String getName()

      Returns the name of this static meta method.

      Returns:
        the name of the method

    - #### public Class getReturnType()

      Returns the return type of this method.

      Returns:
        Object.class, as closures return Object

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

      Invokes the static closure method with the given arguments. The closure's delegate is set to the object parameter.

      Parameters:
        `object` - the object to set as the closure's delegate
        `arguments` - the arguments to pass to the closure
      Returns:
        the result of the closure invocation