Groovy's dynamic nature makes it easy to extend classes with new behaviour. One of the ways is to add methods or property to the metaClass
property of a class. We can use the same mechanism to add static methods to the class. We only have to specify the keyword 'static'
when we define the new method.
class User { String username, email String toString() { "$username, $email" } } User.metaClass.static.new = { u, e -> new User(username: u, email: e) } def u = User.new('mrhaki', 'mail@host.com') assert 'mrhaki' == u.username assert 'mail@host.com' == u.email