我正在处理实现Groovy Lambda函数的问题,该函数将文本从列表集合转换为列表集合。 原始的Java代码:
list.stream().map(WebElement::getText).collect(Collectors.toList());
我的Groovy版本失败:
list.stream().map({ WebElement } as String).collect(Collectors.toList())
groovy.lang.MissingMethodException:没有方法的签名: java.util.stream.ReferencePipeline $ Head.map()适用于 参数类型:(java.lang.String)值: [quality1.CommonMethods$_clickSubMenuLeftBar_closure2@4e49ce2b] 可能的解决方案:map(java.util.function.Function), max(java.util.Comparator),min(java.util.Comparator),wait(),grep(), any()–
有人可以帮助我如何使其正常工作吗?我正在尝试使用类似的方法,例如:http://mrhaki.blogspot.com/2015/04/groovy-goodness-use-closures-as-java.html,但没有成功。
答案 0 :(得分:0)
Groovy 3.0 (当前版本:3.0.0-alpha-3)将借助新的鹦鹉解析器-http://groovy-lang.org/releasenotes/groovy-3.0.html
支持lambda表达式和方法引用对于Groovy 2.5.x和更早的版本,您将不得不替换方法参考:
WebElement::getText
带结束符:
{ el -> el.getText() }
最后的工作示例应如下所示:
list.stream().map{ el -> el.getText() }.collect(Collectors.toList())