Groovy 1.7.0

## groovy.lang
Interface MetaClass

    groovy.lang.MetaObjectProtocol
      groovy.lang.MetaClass

All Superinterfaces:
  MetaObjectProtocol

    interface MetaClass
    extends MetaObjectProtocol

A MetaClass within Groovy defines the behaviour of any given Groovy or Java class. The MetaClass interface defines two parts. The client API, which is defined via the extend MetaObjectProtocol interface and the contract with the Groovy runtime system. In general the compiler and Groovy runtime engine interact with methods on this class whilst MetaClass clients interact with the method defined by the MetaObjectProtocol interface

see:
  MetaClassImpl

see:
  MetaObjectProtocol

author:
  John Wilson

author:
  Graeme Rocher

Method Summary
`Object` | `getAttribute(Class sender, Object receiver, String messageName, boolean useSuper)` Retrieves the value of an attribute (field).
`ClassNode` | `getClassNode()` Obtains a reference to the original AST for the MetaClass if it is available at runtime
`List` | `getMetaMethods()` Retrieves a list of MetaMethods held by this class
`List` | `getMethods()` Retrieves a list of MetaMethods held by the class
`List` | `getProperties()` Retrives a list of MetaProperty instances that the MetaClass has
`Object` | `getProperty(Class sender, Object receiver, String property, boolean isCallToSuper, boolean fromInsideClass)` Retrieves a property on the given receiver for the specified arguments.
`void` | `initialize()` complete the initlialisation process.
`Object` | `invokeMethod(Class sender, Object receiver, String methodName, Object[] arguments, boolean isCallToSuper, boolean fromInsideClass)` Invokes a method on the given receiver for the specified arguments.
`Object` | `invokeMissingMethod(Object instance, String methodName, Object[] arguments)` Attempts to invoke the methodMissing method otherwise throws a MissingMethodException
`Object` | `invokeMissingProperty(Object instance, String propertyName, Object optionalValue, boolean isGetter)` Invokes the propertyMissing method otherwise throws a MissingPropertyException
`MetaMethod` | `pickMethod(String methodName, Class[] arguments)` Selects a method by name and argument classes.
`int` | `selectConstructorAndTransformArguments(int numberOfConstructors, Object[] arguments)` Internal method to support Groovy runtime.
`void` | `setAttribute(Class sender, Object receiver, String messageName, Object messageValue, boolean useSuper, boolean fromInsideClass)` Sets the value of an attribute (field).
`void` | `setProperty(Class sender, Object receiver, String property, Object value, boolean isCallToSuper, boolean fromInsideClass)` Retrieves a property on the given receiver for the specified arguments.

Methods inherited from interface MetaObjectProtocol
getAttribute, getMetaMethod, getMetaProperty, getMethods, getProperties, getProperty, getStaticMetaMethod, getTheClass, hasProperty, invokeConstructor, invokeMethod, invokeMethod, invokeStaticMethod, respondsTo, respondsTo, setAttribute, setProperty

Method Detail

### getAttribute

    public Object getAttribute(Class sender, Object receiver, String messageName, boolean useSuper)

  Retrieves the value of an attribute (field). This method is to support the Groovy runtime and not for general client API usage.
  param:
    sender The class of the object that requested the attribute
  param:
    receiver The instance
  param:
    messageName The name of the attribute
  param:
    useSuper Whether to look-up on the super class or not
  return:
    The attribute value

### getClassNode

    public ClassNode getClassNode()

  Obtains a reference to the original AST for the MetaClass if it is available at runtime
  return:
    The original AST or null if it cannot be returned

### getMetaMethods

    public List getMetaMethods()

  Retrieves a list of MetaMethods held by this class
  return:
    A list of MetaMethods

### getMethods

    public List getMethods()

  Retrieves a list of MetaMethods held by the class
  return:
    A list of MetaMethods

### getProperties

    public List getProperties()

  Retrives a list of MetaProperty instances that the MetaClass has
  see:
    MetaProperty
  return:
    A list of MetaProperty instances

### getProperty

    public Object getProperty(Class sender, Object receiver, String property, boolean isCallToSuper, boolean fromInsideClass)

  Retrieves a property on the given receiver for the specified arguments. The sender is the class that is requesting the property from the object. The MetaClass will attempt to establish the method to invoke based on the name and arguments provided.

  The isCallToSuper and fromInsideClass help the Groovy runtime perform optimisations on the call to go directly to the super class if necessary

  param:
    sender The java.lang.Class instance that requested the property
  param:
    receiver The Object which the property is being retrieved from
  param:
    property The name of the property
  param:
    isCallToSuper Whether the call is to a super class property
  param:
    fromInsideClass ??
  return:
    The properties value

### initialize

    public void initialize()

  complete the initlialisation process. After this method is called no methods should be added to the meta class. Invocation of methods or access to fields/proeprties is forbidden unless this method is called. This method should contain any initialisation code, taking a longer time to complete. An example is the creation of the Reflector. It is suggested to synchronize this method.

### invokeMethod

    public Object invokeMethod(Class sender, Object receiver, String methodName, Object[] arguments, boolean isCallToSuper, boolean fromInsideClass)

  Invokes a method on the given receiver for the specified arguments. The sender is the class that invoked the method on the object. The MetaClass will attempt to establish the method to invoke based on the name and arguments provided.

  The isCallToSuper and fromInsideClass help the Groovy runtime perform optimisations on the call to go directly to the super class if necessary

  param:
    sender The java.lang.Class instance that invoked the method
  param:
    receiver The object which the method was invoked on
  param:
    methodName The name of the method
  param:
    arguments The arguments to the method
  param:
    isCallToSuper Whether the method is a call to a super class method
  param:
    fromInsideClass Whether the call was invoked from the inside or the outside of the class
  return:
    The return value of the method

### invokeMissingMethod

    public Object invokeMissingMethod(Object instance, String methodName, Object[] arguments)

  Attempts to invoke the methodMissing method otherwise throws a MissingMethodException

  see:
    MissingMethodException
  param:
    instance The instance to invoke methodMissing on
  param:
    methodName The name of the method
  param:
    arguments The arguments to the method
  return:
    The results of methodMissing or throws MissingMethodException

### invokeMissingProperty

    public Object invokeMissingProperty(Object instance, String propertyName, Object optionalValue, boolean isGetter)

  Invokes the propertyMissing method otherwise throws a MissingPropertyException
  param:
    instance The instance of the class
  param:
    propertyName The name of the property
  param:
    optionalValue The value of the property which could be null in the case of a getter
  param:
    isGetter Whether the missing property event was the result of a getter or a setter
  return:
    The result of the propertyMissing method or throws MissingPropertyException

### pickMethod

    public MetaMethod pickMethod(String methodName, Class[] arguments)

  Selects a method by name and argument classes. This method does not search for an exact match, it searches for a compatible method. For this the method selection mechanism is used as provided by the implementation of this MetaClass. pickMethod may or may not be used during the method selection process when invoking a method. There is no warranty for that.
  return:
    a matching MetaMethod or null
  throws:
    GroovyRuntimeException if there is more than one matching method
  param:
    methodName the name of the method to pick
  param:
    arguments the method arguments

### selectConstructorAndTransformArguments

    public int selectConstructorAndTransformArguments(int numberOfConstructors, Object[] arguments)

  Internal method to support Groovy runtime. Not for client usage.
  param:
    numberOfConstructors The number of constructors
  param:
    arguments The arguments
  return:
    selected index

### setAttribute

    public void setAttribute(Class sender, Object receiver, String messageName, Object messageValue, boolean useSuper, boolean fromInsideClass)

  Sets the value of an attribute (field). This method is to support the Groovy runtime and not for general client API usage.
  param:
    sender The class of the object that requested the attribute
  param:
    receiver The instance
  param:
    messageName The name of the attribute
  param:
    messageValue The value of the attribute
  param:
    useSuper Whether to look-up on the super class or not
  param:
    fromInsideClass Whether the call happened from the inside or the outside of a class

### setProperty

    public void setProperty(Class sender, Object receiver, String property, Object value, boolean isCallToSuper, boolean fromInsideClass)

  Retrieves a property on the given receiver for the specified arguments. The sender is the class that is requesting the property from the object. The MetaClass will attempt to establish the method to invoke based on the name and arguments provided.

  The isCallToSuper and fromInsideClass help the Groovy runtime perform optimisations on the call to go directly to the super class if necessary

  param:
    sender The java.lang.Class instance that is mutating the property
  param:
    receiver The Object which the property is being set on
  param:
    property The name of the property
  param:
    value The new value of the property to set
  param:
    isCallToSuper Whether the call is to a super class property
  param:
    fromInsideClass ??

Copyright © 2003-2009 The Codehaus. All rights reserved.