GroovyInterceptable和java回调

时间:2015-06-23 15:43:40

标签: java groovy callback

如何从Groovy和Java调用方法来获取GroovyInterceptable对象(id est总是调用invokeMethod)的正常行为。

我有一个Groovy代码,其中invokeMethod是自定义的。

interface ITest {
    void test()
}
class Toto implements ITest, GroovyInterceptable {
    def invokeMethod(String name, Object args) {
        System.out.println 'invokeMethod'
    }
    void test() {
        System.out.println 'test'
    }
}
Toto toto = new Toto()
toto.test() // display invokeMethod 

如果我的回调仍然可以

class Tutu {
    def execute(ITest object) {
        object.test()
    }
}

Tutu tutu = new Tutu()
tutu.execute(toto)​ // display invokeMethod

但是如果Tutu类不在Groovy中但在Java中,对test()的调用是直接的,则永远不会调用invokeMethod。 这似乎很清楚,Java并没有处理GroovyInterceptable ......

显然,Toto是我项目中的一个类,Tutu是我无法修改的依赖类之一。 那么在Toto上做什么来获得所有情况下的行为。

我看到的唯一解决方案是每个公共/受保护方法的一些AST

0 个答案:

没有答案