相关疑难解决方法(0)

Groovy:在调用任何方法之前和之后,执行代码是透明的

假设我们有一个带有一些方法(静态或非静态)的groovy类.我想要做的是在调用此类的每个方法之前和之后执行一些代码,而根本不需要触及类,也不需要动态操作每个方法内部的代码.

我尝试使用groovy metaClass; 获取metaClass的所有方法,然后使用包装方法动态替换every方法,包含一些代码,并在中间调用旧方法.问题是,我不知道每个原始方法的参数,所以我不能用新方法(闭包)替换旧方法,因为我不能动态地创建具有不同数量和类型的参数的包装闭包,即使yi可以,我不知道如何在包装封口内访问它们.我需要包装闭包具有与旧方法相同的签名,以便在有人在透明地更改类之后尝试调用旧方法时调用闭包.

在Javascript中,我可以使用args []数组访问函数体中的所有参数,即使我在编写代码时不知道参数名称.

我怎么能在groovy做到这一点?或者他们可能是另一种方式来实现我的目标?

reflection groovy closures metaclass

4
推荐指数
1
解决办法
1433
查看次数

标签 统计

closures ×1

groovy ×1

metaclass ×1

reflection ×1