J'ai une fermeture dans un objet Foo et à l'intérieur de la fermeture i définir une méthode appelée « myStaticMethod » que je veux résoudre une fois que la fermeture est appelé en dehors de l'objet Foo. Il m'arrive aussi d'avoir «intentionnellement» une méthode statique dans mon objet Foo avec le même nom. Quand j'appelle la fermeture je mets la 'stratégie de résolution' à DELEGATE_ONLY pour intercepter l'appel à myStaticMethod qui est défini dans la fermeture.Groovy methodMissing
J'ai essayé d'atteindre cela par missingMethod mais la méthode n'est jamais interceptée. Quand je fais le Foo. myStaticMethod non statique, la méthode est interceptée. Je ne comprends pas très bien pourquoi cela se produit bien que ma stratégie de résolution soit définie sur DELEGATE_ONLY. ayant la Foo.myStaticMethod statique ou non ne devrait pas importer ou je manque quelque chose
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
}
}
+1 Je ne savais pas l'affaire static_methodMissing $, qui pourrait être utile –
+1 pour la static_methodMissing statique $ (String name, args) trick! Ca vient de faire ma journée! J'ai pu mettre en place une belle configuration DSL avec ça –