小编Cra*_*aig的帖子

如何从一个groovy闭包返回并停止执行?

我想从一个闭包返回,就像在循环中使用break语句一样.

例如:

largeListOfElements.each{ element->
    if(element == specificElement){
        // do some work          
        return // but this will only leave this iteration and start the next 
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的if语句中,我想停止遍历列表并离开闭包以避免不必要的迭代.

我已经看到了一个解决方案,在闭包内抛出一个异常并被抓到外面,但我不太喜欢那个解决方案.

除了更改代码以避免这种算法之外,还有其他解决方案吗?

groovy closures return

36
推荐指数
2
解决办法
3万
查看次数

如何从groovy覆盖java方法

我有一个groovy类,能够将其输出写入StringWriter- (通过setStringWriter方法).

在java中我会使用以下代码:

filter.setStringWriter(new StringWriter(){
   @Override
   public void write(String string){
       // do something with the string
   }
}); 
Run Code Online (Sandbox Code Playgroud)

对于Groovy,我被告知要使用一个闭包,我已经尝试了以下但没有运气:

def s =  {String line -> print line} as StringWriter
filter.setStringWriter(s)
Run Code Online (Sandbox Code Playgroud)

要么

filter.setStringWriter{String line -> print line}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢,或者甚至可能吗?

java groovy

8
推荐指数
1
解决办法
2979
查看次数

填写碧玉报告时取得进展

我想在Jasper报告填写编译报告时向用户提供进展.基本上我想在执行时取得进展:

JasperFillManager.fillReport(JasperReport rpt,Map params,JRDataSource src)

反正有没有实现这个目标?

java jasper-reports

8
推荐指数
1
解决办法
4423
查看次数

标签 统计

groovy ×2

java ×2

closures ×1

jasper-reports ×1

return ×1