gpt4 book ai didi

Groovy - 覆盖单个实例的 invokeMethod

转载 作者:行者123 更新时间:2023-12-05 01:29:24 26 4
gpt4 key购买 nike

我有一个 java 对象的实例,假设有一个名为 myList 的 ArrayList 实例。

对于此特定实例,我想覆盖 invokeMethod 方法以(例如)记录调用该方法。

我可以做这样的事情:

myList.metaclass.invokeMethod { name, args -> 

println "Called ${name} with ${args}"
whatGoesHere.invokeMethod(name, args)

}

注意闭包的第二行 - 我如何调用原始的 invokeMethod 方法?我这样做正确吗?

最佳答案

原始方法可能有更短的路线,但这应该有效:

def myList = [ 1, 2, 3 ]

myList.metaClass.invokeMethod { name, args ->
println "Called ${name} with ${args}"
delegate.class.metaClass.getMetaMethod( name, args )?.invoke( delegate, args )
}

myList.sum()

关于Groovy - 覆盖单个实例的 invokeMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com