Groovy includes a special MetaClass called an ExpandoMetaClass that allows you to dynamically add methods, constructors, properties and static methods using a neat closure syntax.
How does it work? Every java.lang.Class is supplied with a special "metaClass" property that will give you a reference to an ExpandoMetaClass instance.
For example to obtain the ExpandoMetaClass of the java.lang.String class you use:
This adds a method called
swapCase to the String class.