GroovyのOwner、this、delegateについて
[groovy]いまいち使い方がわからなかったので、テストコードで試してみた。
/** * クロージャの実行順序確認 */ class Sample1 { static main(args) { // クラスBのインスタンス作成 def b = new B() // クラスAのクロージャを設定 b.c = new A().c def bb = b.c() // デリゲート設定 bb.delegate = b // クロージャ実行 bb() } static class A { // クロージャを返すクロージャ def c = { def hello = { println "Hello A1'" } return { println owner println "this =$this" println "delegate=$delegate" hello() } } def hello() { println "Hello A1" } } static class B { // クロージャ def c def hello() { println "Hello B1" } } }
実行すると、「"Hello A1'"」が表示される。
↓
メソッドの探索順はowner⇒this⇒delegateの順
すっきり~