Using ExpandoMetaClass to add behaviour
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 when used will give you a reference to an ExpandoMetaClass instance.
For example given the Java class java.lang.String to obtain its ExpandoMetaClass you can use:
This adds a method called
swapCase to the String class.