![](/img/trans.png)
[英]closures in groovy vs closures in java 8 (lambda expressions)?
[英]How to write java class methods that can accept groovy closures
这就是我想要做的事情:
我有一个名为RowCollection
的类,它包含一个Row
对象的集合,其中有一个名为edit
的方法,它应该接受另一个对Row
对象进行操作的方法(或闭包)作为参数。
一个groovy脚本将以下列方式使用此类的对象:
rc.edit({ it.setTitle('hello world') }); // it is a "Row" object
我的问题:
RowCollection#edit
的签名会是什么样的? 作为替代方案,如果您使RowCollection
实现Iterable<Row>
并提供合适的iterator()
方法,那么应用于所有类的标准Groovy-JDK魔法将启用
rc.each { it.title = "hello world" }
并以相同的方式免费获得所有其他iterator
支持的GDK方法,包括collect
, findAll
, inject
, any
, every
和grep
。
好的 - 一点点挖掘,这里是:
class RowCollection {
private List<Row> rows;
// ...
public void edit(Closure c) {
for(Row r : rows) {
c.call(r);
}
}
// ...
}
Closure类在groovy.lang
包中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.