如何在Groovy中定义@CompileStatic兼容闭包?

如何在Groovy中定义@CompileStatic兼容闭包?,groovy,closures,groovy++,Groovy,Closures,Groovy++,我有一个类,其闭包定义为: void everyPixel( closure ){ for( def x : 0..width-1 ) for( def y : 0..height-1 ) closure( x, y ) } 但如果我将@CompileStatic注释应用于它,它将不会编译它在添加闭包之前所做的操作,并显示以下消息: Groovyc:[静态类型检查]-找不到匹配的方法java.lang.Objectcalljava.lang.In

我有一个类,其闭包定义为:

void everyPixel( closure ){
    for( def x : 0..width-1 )
        for( def y : 0..height-1 )
            closure( x, y )
}
但如果我将@CompileStatic注释应用于它,它将不会编译它在添加闭包之前所做的操作,并显示以下消息:

Groovyc:[静态类型检查]-找不到匹配的方法java.lang.Objectcalljava.lang.Integer,java.lang.Integer。请检查声明的类型是否正确以及方法是否存在


如何为它创建一个类型签名,以便它能够静态编译?到目前为止,我在谷歌上的所有点击都是关于如何传递闭包,而不是如何定义一个接受闭包的方法-/

你只需要告诉它闭包就是闭包:

void everyPixel( Closure closure ){
  for( x in 0..<width )
    for( y in 0..<height )
      closure( x, y )
}