Groovy:如何获取调用静态方法的Type?

时间:2013-04-18 07:33:02

标签: groovy static-methods

当使用Child类调用在Base类上定义的静态方法时,如何在Child类类型上调用它?:

class Base {
    static def method(){
        println "class on which this method is called? ${this}"
    }
}

class Child extends Base {}

Child.method()

在上面的代码中,this正确指向Base类。

1 个答案:

答案 0 :(得分:0)

我不认为可以使用实际的静态方法来完成,但一个不错的选择是使用groovy expandoMetaClass 来添加静态闭包方法。在所述闭包内,您可以作为委托访问调用类。即。

Base.metaClass.static.anotherMethod = {
   println "class on which another method is called? ${delegate}"
}

现在调用Base.anotherMethod()将委托引用Base并调用Child.anotherMethod将其指向Child。