Save This Page
Home » groovy-src-1.6.3 » groovy » lang » [javadoc | source]
groovy.lang
public interface: MetaClass [javadoc | source]

All Implemented Interfaces:
    MetaObjectProtocol

All Known Implementing Classes:
    ClosureMetaClass, ExpandoMetaClass, DelegatingMetaClass, MixedInMetaClass, HandleMetaClass, AdaptingMetaClass, ProxyMetaClass, OwnedMetaClass, FactoryInterceptorMetaClass, MockProxyMetaClass, MetaClassImpl, MutableMetaClass

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
Method from groovy.lang.MetaClass Summary:
getAttribute,   getClassNode,   getMetaMethods,   getMethods,   getProperties,   getProperty,   initialize,   invokeMethod,   invokeMissingMethod,   invokeMissingProperty,   pickMethod,   selectConstructorAndTransformArguments,   setAttribute,   setProperty
Method from groovy.lang.MetaClass Detail:
 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.
 public ClassNode getClassNode()
    Obtains a reference to the original AST for the MetaClass if it is available at runtime
 public List getMetaMethods()
    Retrieves a list of MetaMethod instances held by this class
 public List getMethods()
    Retrieves a list of MetaMethods held by the class
 public List getProperties()
    Retrives a list of MetaProperty instances that the MetaClass has
 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

 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.
 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

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

    Attempts to invoke the methodMissing method otherwise throws a MissingMethodException

 public Object invokeMissingProperty(Object instance,
    String propertyName,
    Object optionalValue,
    boolean isGetter)
    Invokes the propertyMissing method otherwise throws a MissingPropertyException
 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.
 public int selectConstructorAndTransformArguments(int numberOfConstructors,
    Object[] arguments)
    Internal method to support Groovy runtime. Not for client usage.
 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.
 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