Package: groovy.lang

## [Java] Class MetaClassImpl

- groovy.lang.MetaClassImpl

- All Implemented Interfaces and Traits:
    MetaClass, MutableMetaClass

      public class MetaClassImpl
      extends Object
      implements MetaClass, MutableMetaClass

  Allows methods to be dynamically added to existing classes at runtime

  See Also:
    MetaClass

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static Object[]` | `EMPTY_ARGUMENTS` |
    `protected static String` | `INVOKE_METHOD_METHOD` |
    `protected static String` | `METHOD_MISSING` |
    `protected static String` | `PROPERTY_MISSING` |
    `protected static String` | `STATIC_METHOD_MISSING` |
    `protected static String` | `STATIC_PROPERTY_MISSING` |
    `protected MetaMethod` | `getPropertyMethod` |
    `protected MetaMethod` | `invokeMethodMethod` |
    `protected boolean` | `isGroovyObject` |
    `protected boolean` | `isMap` |
    `protected MetaMethodIndex` | `metaMethodIndex` |
    `protected MetaClassRegistry` | `registry` |
    `protected MetaMethod` | `setPropertyMethod` |
    `protected CachedClass` | `theCachedClass` |
    `protected Class` | `theClass` |

  - ### Constructor Summary

    Constructors
    Constructor and description
    `MetaClassImpl (Class theClass, MetaMethod[] add)` Constructor
    `MetaClassImpl (Class theClass)` Constructor that sets the methods to null
    `MetaClassImpl (MetaClassRegistry registry, Class theClass, MetaMethod[] add)` Constructor with registry
    `MetaClassImpl (MetaClassRegistry registry, Class theClass)` Constructor with registry setting methods to null

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public MetaMethod` | `getMetaMethod(String name, Object[] argTypes)` See Also: MetaObjectProtocol.getMetaMethod
    `` | `public MetaProperty` | `getMetaProperty(String name)` See Also: MetaObjectProtocol.getMetaProperty
    `` | `public MetaClassRegistry` | `getRegistry()` Returns the registry for this metaclass
    `` | `public MetaMethod` | `getStaticMetaMethod(String name, Object[] argTypes)` See Also: MetaObjectProtocol.getStaticMetaMethod
    `` | `protected LinkedList<CachedClass>` | `getSuperClasses()`
    `` | `public final CachedClass` | `getTheCachedClass()` Returns the cached class for this metaclass
    `` | `public Class` | `getTheClass()` Returns the class this object this is the metaclass of.
    `` | `public MetaProperty` | `hasProperty(Object obj, String name)` See Also: MetaObjectProtocol.hasProperty
    `` | `public boolean` | `isGroovyObject()` Return whether the class represented by this metaclass instance is an instance of the GroovyObject class
    `` | `public void` | `methodNameAction(Class<?> clazz, Entry e)`
    `` | `public List` | `respondsTo(Object obj, String name, Object[] argTypes)` See Also: MetaObjectProtocol.respondsTo
    `` | `public List` | `respondsTo(Object obj, String name)` See Also: MetaObjectProtocol.respondsTo
    `` | `public boolean` | `skipClass(Class<?> clazz)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Field Detail

    - #### public static final Object[] EMPTY_ARGUMENTS

    - #### protected static final String INVOKE_METHOD_METHOD

    - #### protected static final String METHOD_MISSING

    - #### protected static final String PROPERTY_MISSING

    - #### protected static final String STATIC_METHOD_MISSING

    - #### protected static final String STATIC_PROPERTY_MISSING

    - #### protected MetaMethod getPropertyMethod

    - #### protected MetaMethod invokeMethodMethod

    - #### protected final boolean isGroovyObject

    - #### protected final boolean isMap

    - #### protected final MetaMethodIndex metaMethodIndex

    - #### protected MetaClassRegistry registry

    - #### protected MetaMethod setPropertyMethod

    - #### protected final CachedClass theCachedClass

    - #### protected final Class theClass

  - ### Constructor Detail

    - #### public MetaClassImpl(Class theClass, MetaMethod[] add)

      Constructor

      Parameters:
        `theClass` - The class this is the metaclass dor
        `add` - The methods for this class

    - #### public MetaClassImpl(Class theClass)

      Constructor that sets the methods to null

      Parameters:
        `theClass` - The class this is the metaclass dor

    - #### public MetaClassImpl(MetaClassRegistry registry, Class theClass, MetaMethod[] add)

      Constructor with registry

      Parameters:
        `registry` - The metaclass registry for this MetaClass
        `theClass` - The class
        `add` - The methods

    - #### public MetaClassImpl(MetaClassRegistry registry, Class theClass)

      Constructor with registry setting methods to null

      Parameters:
        `registry` - The metaclass registry for this MetaClass
        `theClass` - The class

  - ### Method Detail

    - #### @Override public MetaMethod getMetaMethod(String name, Object[] argTypes)

      See Also:
        MetaObjectProtocol.getMetaMethod

    - #### @Override public MetaProperty getMetaProperty(String name)

      See Also:
        MetaObjectProtocol.getMetaProperty

    - #### public MetaClassRegistry getRegistry()

      Returns the registry for this metaclass

      Returns:
        The resgistry

    - #### @Override public MetaMethod getStaticMetaMethod(String name, Object[] argTypes)

      See Also:
        MetaObjectProtocol.getStaticMetaMethod

    - #### protected LinkedList<CachedClass> getSuperClasses()

    - #### public final CachedClass getTheCachedClass()

      Returns the cached class for this metaclass

      Returns:
        The cached class.

    - #### public Class getTheClass()

      Returns the class this object this is the metaclass of.

      Returns:
        The class contained by this metaclass

    - #### @Override public MetaProperty hasProperty(Object obj, String name)

      See Also:
        MetaObjectProtocol.hasProperty

    - #### public boolean isGroovyObject()

      Return whether the class represented by this metaclass instance is an instance of the GroovyObject class

      Returns:
        true if this is a groovy class, false otherwise.

    - #### @Override public void methodNameAction(Class<?> clazz, Entry e)

    - #### @Override public List respondsTo(Object obj, String name, Object[] argTypes)

      See Also:
        MetaObjectProtocol.respondsTo

    - #### @Override public List respondsTo(Object obj, String name)

      See Also:
        MetaObjectProtocol.respondsTo

    - #### @Override public boolean skipClass(Class<?> clazz)