У меня есть замыкание внутри объекта 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
}
}