Использование пакета имя конвенции Groovy, я могу перехватить метод Groovy вызовы метода Java, как так:Groovy: Делегирование метакласса для интерфейса?
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)
}
}
Это прекрасно работает, если я действительно создать объект класса Foo:
def myFoo = new Foo()
def fooProperty = myFoo.bar // metaclass invokes myFoo.someMethod("bar")
Однако то, что если Foo является интерфейсом, и я хочу перехватить вызовы метода для любой его реализации?
def myFoo = FooFactory.create() // I don't know what class this will be
fooProperty = myFoo.bar
Есть ли способ достичь этого, не имея делегированияMetaClass для каждой известной реализации интерфейса?
Perfect. Благодарю. – slim