我正在处理实现 groovy lambda 函数将文本从 List 集合获取到 List 集合的问题。 原始java代码:
list.stream().map(WebElement::getText).collect(Collectors.toList());
我的 Groovy 版本失败:
list.stream().map({ WebElement } as String).collect(Collectors.toList())
groovy.lang.MissingMethodException: No signature of method: java.util.stream.ReferencePipeline$Head.map() is applicable for argument types: (java.lang.String) values: [quality1.CommonMethods$_clickSubMenuLeftBar_closure2@4e49ce2b] Possible solutions: 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但没有成功。
最佳答案
Groovy 3.0(当前版本:3.0.0-alpha-3)将支持 lambda 表达式和方法引用,这要归功于新的 parrot 解析器 - http://groovy-lang.org/releasenotes/groovy-3.0.html
对于 Groovy 2.5.x 及更早版本,您必须替换方法引用:
WebElement::getText
有一个闭包:
{ el -> el.getText() }
最终的工作示例应如下所示:
list.stream().map{ el -> el.getText() }.collect(Collectors.toList())
关于java - 从 Groovy 中的 List<WebElement> 获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634927/