Package: groovy.lang

## [Java] Interface GroovyObject

- The interface implemented by all Groovy objects.

  Especially handy for using Groovy objects when in the Java world.

- - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `MetaClass` | `metaClass`
    `Object` | `property`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `MetaClass` | `getMetaClass()` Returns the metaclass for a given class.
    `` | `Object` | `getProperty(String propertyName)` Retrieves a property value.
    `` | `Object` | `invokeMethod(String name, Object args)` Invokes the given method.
    `` | `void` | `setMetaClass(MetaClass metaClass)` Allows the MetaClass to be replaced with a derived implementation.
    `` | `void` | `setProperty(String propertyName, Object newValue)` Sets the given property to the new value.

- - ### Property Detail

    - #### MetaClass metaClass

    - #### Object property

  - ### Method Detail

    - #### public MetaClass getMetaClass()

      Returns the metaclass for a given class.

      Returns:
        the metaClass of this instance

    - #### public Object getProperty(String propertyName)

      Retrieves a property value.

      Parameters:
        `propertyName` - the name of the property of interest
      Returns:
        the given property

    - #### public Object invokeMethod(String name, Object args)

      Invokes the given method.

      Parameters:
        `name` - the name of the method to call
        `args` - the arguments to use for the method call
      Returns:
        the result of invoking the method

    - #### public void setMetaClass(MetaClass metaClass)

      Allows the MetaClass to be replaced with a derived implementation.

      Parameters:
        `metaClass` - the new metaclass

    - #### public void setProperty(String propertyName, Object newValue)

      Sets the given property to the new value.

      Parameters:
        `propertyName` - the name of the property of interest
        `newValue` - the new value for the property