## groovy.lang
Interface MutableMetaClass

All Superinterfaces:
  MetaClass, MetaObjectProtocol

All Known Implementing Classes:
  ClosureMetaClass, DelegatingMetaClass, ExpandoMetaClass, MetaClassImpl, MockProxyMetaClass, ProxyMetaClass

    public interface MutableMetaClass

extends MetaClass

An interface that defines methods that implementors of mutable Meta classes should specifiy. It provides operations to perform mutations on the MetaClass instance.

Whether a MetaClass allows mutation is up to the MetaClass itself and considerations of Thread safety need to be taken into account when making a MetaClass mutable

The default implementation allows mutation of MetaClass instances before initialisation (before the initialize() method is called) but not after, thus ensuring Thread safety once a MetaClass has been constructed and placed in the registry

Since:
  1.1

  Created: Feb 24, 2007 Time: 4:05:44 PM
Author:
  Graeme Rocher
See Also:
  `MetaClassImpl`, `MetaClass`

Method Summary
`void` `addMetaBeanProperty(MetaBeanProperty metaBeanProperty)` Adds a new MetaBeanProperty to the MetaClass
`void` `addMetaMethod(MetaMethod metaMethod)` Adds a new MetaMethod to the MetaClass
`void` `addNewInstanceMethod(Method method)` adds a new instance method to this MetaClass.
`void` `addNewStaticMethod(Method method)` adds a new static method to this MetaClass.
`boolean` `isModified()` Return whether the MetaClass has been modified or not

Methods inherited from interface groovy.lang.MetaClass
`getAttribute, getClassNode, getMetaMethods, getMethods, getProperties, getProperty, initialize, invokeMethod, invokeMissingMethod, invokeMissingProperty, pickMethod, selectConstructorAndTransformArguments, setAttribute, setProperty`

Methods inherited from interface groovy.lang.MetaObjectProtocol
`getAttribute, getMetaMethod, getMetaProperty, getProperty, getStaticMetaMethod, getTheClass, hasProperty, invokeConstructor, invokeMethod, invokeMethod, invokeStaticMethod, respondsTo, respondsTo, setAttribute, setProperty`

Method Detail

### isModified

    boolean isModified()

  Return whether the MetaClass has been modified or not

  Returns:
    True if it has

### addNewInstanceMethod

    void addNewInstanceMethod(Method method)

  adds a new instance method to this MetaClass. Instance methods are able to overwrite the original methods of the class. Calling this method should not be done after initlise was called.

  Parameters:
    `method` - the method to be added

### addNewStaticMethod

    void addNewStaticMethod(Method method)

  adds a new static method to this MetaClass. This is only possible as long as initilise was not called.

  Parameters:
    `method` - the method to be added

### addMetaMethod

    void addMetaMethod(MetaMethod metaMethod)

  Adds a new MetaMethod to the MetaClass

  Parameters:
    `metaMethod` - The MetaMethod to add

### addMetaBeanProperty

    void addMetaBeanProperty(MetaBeanProperty metaBeanProperty)

  Adds a new MetaBeanProperty to the MetaClass

  Parameters:
    `metaBeanProperty` - The MetaBeanProperty instance

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