当前位置:  开发笔记 > 编程语言 > 正文

Groovy:为接口委派元类?

如何解决《Groovy:为接口委派元类?》经验,为你挑选了0个好方法。

使用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

有没有一种方法可以实现这一点,而不需要为每个已知的接口实现提供DelegatingMetaClass?

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有