我在对象Foo中有一个闭包,在闭包内部我定义了一个名为“ myStaticMethod ”的方法,一旦在对象Foo之外调用闭包,我就想解决该方法。我也碰巧在我的对象 Foo 中有一个具有相同名称的静态方法。当我调用闭包时,我将“解决策略”设置为 DELEGATE_ONLY 以拦截对闭包中定义的myStaticMethod的调用。
我试图通过missingMethod来实现,但该方法从未被拦截。当我做 Foo. myStaticMethod非静态,方法被拦截。尽管我的解决策略设置为 DELEGATE_ONLY,但我不太明白为什么会发生这种情况。拥有Foo.myStaticMethod静态与否无关紧要,否则我错过了一些东西
class Foo {
static myclosure = {
myStaticMethod()
}
static def myStaticMethod() {}
}
class FooTest {
def c = Foo.myclosure
c.resolveStrategy = Closure.DELEGATE_ONLY
c.call()
def missingMethod(String name, def args) {
println $name
}
}