Groovy:将属性中方法的引用添加到父对象

时间:2016-12-01 13:29:43

标签: groovy

说我有这样的课程:

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()

doFoodoBar方法调用只是委托给各自对象中定义的版本?有没有办法用某种元编程来做到这一点,或者我是否坚持将每个方法单独定义为包装器?

1 个答案:

答案 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()