如何metaClass一个带闭包的Groovy方法?

时间:2012-10-01 17:44:46

标签: groovy metaclass

一个metaClass如何采用一个对象和一个闭包的方法?

具体来说,

public void eachRow(GString gstring, Closure closure)

我想metaClass eachRow()使得它打印gstring参数,并忽略Closure。目标是创建一个应用程序,当传递某个参数时,使用groovy.sql.Sql执行某种“干运行”执行,而不是执行查询,它只打印它通常会执行的语句。

1 个答案:

答案 0 :(得分:1)

所以我认为我的问题不是我如何定义方法,而是我是(或没有返回)。这似乎有用......

sql.metaClass.eachRow = { String qry, Closure c ->
    println qry
    new GroovyRowResult([:]) // I was returning null, adding this fixed me.
}