ExpandoMetaClass - Overriding static invokeMethod

ExpandoMetaClass - Overriding invokeMethod for static methods

It is also possible to override invokeMethod for static methods.

Overriding invokeMethod for static

As an example of overriding invokeMethod for static methods, take this simple example:

So what is happening here? Well firstly we've overridden invokeMethod using the 'static' qualifier and by assigning it an appropriate closure, but in addition we first look-up a MetaMethod with the line:

A MetaMethod in Groovy is a method that is known to exist on the MetaClass whether added at runtime or whatever, thus we check if there is an existing MetaMethod and if there isn't we simply return "bar", hence the behaviour of the assert statements is correct.