当使用子类调用基类上定义的静态方法时,如何找到它是在子类类型上调用的?:
class Base {
static def method(){
println "class on which this method is called? ${this}"
}
}
class Child extends Base {}
Child.method()
在上面的代码中,this
正确地指向了 Base 类。
当使用子类调用基类上定义的静态方法时,如何找到它是在子类类型上调用的?:
class Base {
static def method(){
println "class on which this method is called? ${this}"
}
}
class Child extends Base {}
Child.method()
在上面的代码中,this
正确地指向了 Base 类。
我不认为它可以用实际的静态方法来完成,但一个不错的选择是使用 groovy expandoMetaClass添加一个静态闭包方法。在所说的闭包中,您可以作为delegate访问调用类。IE
Base.metaClass.static.anotherMethod = {
println "class on which another method is called? ${delegate}"
}
现在调用 Base.anotherMethod() 将使委托引用 Base,调用 Child.anotherMethod 将使其指向 Child。