说我有这样的课程:
class Foo {
def doFoo() {
println "foo"
}
}
另一个像这样:
class Bar {
def doBar() {
println "bar"
}
}
还有一个看起来像这样:
class Baz {
Foo foo = new Foo()
Bar bar = new Bar()
}
通过这个例子,能够像这样使用它需要什么:
Baz baz = new Baz()
baz.doFoo()
baz.doBar()
doFoo
和doBar
方法调用只是委托给各自对象中定义的版本?有没有办法用某种元编程来做到这一点,或者我是否坚持将每个方法单独定义为包装器?
答案 0 :(得分:3)
@Delegate
就是您所需要的:
class Foo {
def doFoo() {
println "foo"
}
}
class Bar {
def doBar() {
println "bar"
}
}
class Baz {
@Delegate
Foo foo = new Foo()
@Delegate
Bar bar = new Bar()
}
Baz baz = new Baz()
baz.doFoo()
baz.doBar()