Groovy 编译器不接受 java 8 Lambda

标签 groovy closures java-8

我们知道,Groovy 语法接受闭包。 今天,Java 8 添加了语法闭包。

但是,当我在 groovy 文件中编写 java8 闭包时,我收到如下错误:

Person.findAll().stream().filter(e-> e.age > 20)

我们收到此错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 7: unexpected token: -> @ line 7, column 39.
   Person.findAll().stream().filter(e-> e.controllerId > 0)
                                         ^

1 error

尽管如此,以下操作仍然成功:

Person.findAll().stream()  

最佳答案

是的,Groovy 解析器不接受 Java 8 Lambda(不是闭包)。

您可以使用闭包来代替它(假设您使用的是 Groovy 2.3.*)

即:

Person.findAll().stream().filter( { e -> e.age > 20 } )

编辑:

Groovy 3.0+ 将接受 lambda 格式

关于Groovy 编译器不接受 java 8 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906748/

相关文章:

JavaScript 删除语句

javascript - jQuery 插件存储值

Java 8 默认方法覆盖(和 eclipse)

java - 按 HashMap 的值(按映射的值比较)对 HashMap 的数组列表进行排序

java - 是否可以从仅公开迭代器的 "readNext"部分的对象创建流?

plugins - 如何在自定义插件中编写dependsOn

grails - 如何通过Grails代码获取 session 超时值

groovy - Kotlin 替换 groovy XmlSlurper 和 MarkupBuilder

elasticsearch - 无需动态脚本的术语频率总和脚本

windows - 如何消除脚本 block 中的重复代码?