## org.codehaus.groovy.runtime.metaclass
Class MetaClassRegistryImpl

    java.lang.Object
      org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl

All Implemented Interfaces:
  MetaClassRegistry

    public class MetaClassRegistryImpl

extends Object
implements MetaClassRegistry

A registry of MetaClass instances which caches introspection & reflection information and allows methods to be dynamically added to existing classes at runtime

Version:
  $Revision: 10896 $
Author:
  James Strachan, John Wilson, Jochen Theodorou, Graeme Rocher, Alex Tkachman

Nested Class Summary

Nested classes/interfaces inherited from interface groovy.lang.MetaClassRegistry
`MetaClassRegistry.MetaClassCreationHandle`

Field Summary
`static int` `DONT_LOAD_DEFAULT`
`static int` `LOAD_DEFAULT`

Constructor Summary
`MetaClassRegistryImpl()`
`MetaClassRegistryImpl(boolean useAccessible)`
`MetaClassRegistryImpl(int loadDefault)`
`MetaClassRegistryImpl(int loadDefault, boolean useAccessible)`

Method Summary
`static MetaClassRegistry` `getInstance(int includeExtension)` Singleton of MetaClassRegistry.
`FastArray` `getInstanceMethods()`
`MetaClass` `getMetaClass(Class theClass)`
`MetaClassRegistry.MetaClassCreationHandle` `getMetaClassCreationHandler()` Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon
`FastArray` `getStaticMethods()`
`void` `removeMetaClass(Class theClass)` Removes a cached MetaClass from the registry
`void` `setMetaClass(Class theClass, MetaClass theMetaClass)` Registers a new MetaClass in the registry to customize the type
`void` `setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)` Sets a handle internally used to create MetaClass implementations.
`boolean` `useAccessible()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### LOAD_DEFAULT

    public static final int LOAD_DEFAULT

See Also:
  Constant Field Values

### DONT_LOAD_DEFAULT

    public static final int DONT_LOAD_DEFAULT

See Also:
  Constant Field Values

Constructor Detail

### MetaClassRegistryImpl

    public MetaClassRegistryImpl()

### MetaClassRegistryImpl

    public MetaClassRegistryImpl(int loadDefault)

### MetaClassRegistryImpl

    public MetaClassRegistryImpl(boolean useAccessible)

Parameters:
  `useAccessible` - defines whether or not the `AccessibleObject.setAccessible(boolean)` method will be called to enable access to all methods when using reflection

### MetaClassRegistryImpl

    public MetaClassRegistryImpl(int loadDefault,
                                 boolean useAccessible)

Method Detail

### getMetaClass

    public MetaClass getMetaClass(Class theClass)

  Specified by:
    `getMetaClass` in interface `MetaClassRegistry`

### removeMetaClass

    public void removeMetaClass(Class theClass)

  Description copied from interface: `MetaClassRegistry`
  Removes a cached MetaClass from the registry

  Specified by:
    `removeMetaClass` in interface `MetaClassRegistry`
  Parameters:
    `theClass` - The Java class of the MetaClass to remove

### setMetaClass

    public void setMetaClass(Class theClass,
                             MetaClass theMetaClass)

  Registers a new MetaClass in the registry to customize the type

  Specified by:
    `setMetaClass` in interface `MetaClassRegistry`
  Parameters:
    `theClass` -
    `theMetaClass` -

### useAccessible

    public boolean useAccessible()

### getMetaClassCreationHandler

    public MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()

  Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon

  Specified by:
    `getMetaClassCreationHandler` in interface `MetaClassRegistry`
  Returns:
    the handle

### setMetaClassCreationHandle

    public void setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle)

  Sets a handle internally used to create MetaClass implementations. When replacing the handle with a custom version, you should resuse the old handle to keep custom logic and to use the default logic as fallback. WARNING: experimental code, likely to change soon

  Specified by:
    `setMetaClassCreationHandle` in interface `MetaClassRegistry`
  Parameters:
    `handle` - the handle

### getInstance

    public static MetaClassRegistry getInstance(int includeExtension)

  Singleton of MetaClassRegistry. Shall we use threadlocal to store the instance?

  Parameters:
    `includeExtension` -

### getInstanceMethods

    public FastArray getInstanceMethods()

### getStaticMethods

    public FastArray getStaticMethods()

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