groovy metaclass replace method superclass

Есть ли способ заменить использование объекта метакласса методом суперкласса. Пример:

class A {
    def doIt(){
        two()
        println 'do it!'
    }
    protected two(){   
        println 'two'
    }
}

class B extends A{
    def doLast(){
        doIt()
    }
}

B b = new B();
b.doIt()
/*
 * two
 * doit!
 */
b.metaClass.two = {
    println 'my new two!'
}
b.doIt();
/*
 * my new two!
 * do it!
 */
6
задан rascio 7 May 2012 в 14:09
поделиться