2016-12-01 67 views
2

說我有一個這樣的類: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方法調用只是委託給各自對象中的已定義版本?有沒有辦法做到這一點與某種元編程,或者我堅持每個方法單獨定義爲包裝?

+0

發現了另一個職位,進入更詳細的關於AST轉換及性狀:http://stackoverflow.com/a/23124968/493807 – Andy

回答

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

就在發現自己。仍在學習Groovy並且每天都更加熱愛它! – Andy

+0

@安迪,是的,這是非常好的語言。 – Opal

相關問題