Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Groovy中有没有办法装饰每个类来添加跟踪?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我进入方法调用时,我将如何进行每个groovy类的每个方法调用打印“输入${methodname}”?

无需包装我使用新的TracingDecorator(new Object())创建的每个新对象?

解决方法

您需要在所有类上覆盖MetaClass.invokeMethod,并使用跟踪内容方法调用包装到原始类.

你可以通过类加载器匹配某种命名/包模式的类列表来旋转,然后为每个类似decorateMethodsWithLogging执行以下操作:

class Foo {
    def bar() {
        println "in bar"
    }

    def baz(String name) {
        println "in baz with $name"
    }
}



def decorateMethodsWithLogging(clazz) {
    def mc = clazz.MetaClass

    mc.invokeMethod = { String name,args ->
        println "before $name,args = $args"
        def result = mc.getMetaMethod(name,args).invoke(delegate,args)
        println "after $name"
        return result
    }
}


decorateMethodsWithLogging(Foo.class)

def f = new Foo()
f.bar()
f.baz("qux")

这打印

before bar,args = []
in bar
after bar
before baz,args = [qux]
in baz with qux
after baz

大佬总结

以上是大佬教程为你收集整理的在Groovy中有没有办法装饰每个类来添加跟踪?全部内容,希望文章能够帮你解决在Groovy中有没有办法装饰每个类来添加跟踪?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: