0

当使用子类调用基类上定义的静态方法时,如何找到它是在子类类型上调用的?:

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

class Child extends Base {}

Child.method()

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

4

1 回答 1

0

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

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

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

于 2013-04-18T07:53:50.250 回答