class A { String doIt() {println 'do A'} }
class B { String doIt() {println 'do B'} }
def pc = { println ( (it == A ? '' : 'x: ') + it.getName()) }
pc(A)
pc(B) //fail
pc(A1) //fail
def a = new A()
pc(a.getClass())
class A1 extends A {
@Delegate B b = new B()
@Delegate A a = new A() // red herring
}
class C {
@Delegate B b = new B()
@Delegate A a = new A() // red herring
}
def a1 = new A1()
a1.doIt() // do A
def c = new C()
c.doIt() // do B
No comments:
Post a Comment