如何从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