Groovy中的闭包在等效Java中实现
我有以下Groovy脚本:
def n = ["1","2","3"]
println n.collect { v -> v.toInteger()*2 }
我想把它翻译成等价的Java代码(从“collect”的含义中抽象出来——现在不管它做什么)
我写了以下内容:
class X {
X() {
object[] n = new object[]{"1","2","3"};
object anonymousBlock(object v) { return v.toInteger()*2; }
System.out.println(n.collect(???));
}
}
使用上面的表示,我应该传递什么作为参数来收集
# 1 楼答案
使用Java 8,您可以执行以下操作:
对于Java 7,一种方法是这样的:
首先,定义一个从一种类型转换为另一种类型的接口:
然后,我们可以定义一个类,该类将委托给迭代器,并在返回每个元素时将
Mapper.apply
方法应用于每个元素:然后,我们可以用以下方式来称呼它:
Java 8和Groovy FTW;-)