class Foo {
String name
}
class Bar {
Foo foo
}
//we overload the setter setFoo(Foo foo) with setFoo(String name)
Bar.metaClass.setFoo= {String value->
Foo foo = new Foo()
foo.name = "dynamic" + value
delegate.setFoo(foo)
}
Bar bar = new Bar()
//instantiate a new foo with a string
bar.foo = "test"
bar.foo.name