En utilisant la convention de nom du package de Groovy, je peux intercepter la méthode Groovy appelle à une méthode Java comme ceci:Groovy: Délégation de métaclasse pour une interface?
package groovy.runtime.metaclass.org.myGang.myPackage
class FooMetaClass extends groovy.lang.DelegatingMetaClass
{
FooMetaClass(MetaClass delegate)
{
super(delegate);
}
public Object getProperty(Object a, String key)
{
return a.someMethod(key)
}
}
Cela fonctionne bien si je crée vraiment un objet de classe Foo:
def myFoo = new Foo()
def fooProperty = myFoo.bar // metaclass invokes myFoo.someMethod("bar")
Cependant ce si Foo est une interface, et que je veux intercepter des appels de méthode à n'importe quelle implémentation? Y a-t-il un moyen d'y parvenir sans disposer d'une DelegatingMetaClass pour toutes les implémentations connues de l'interface?
Parfait. Merci. – slim