鉴于Java 7 SE(标准版)现已正式发布,甲骨文和Java社区进程组织(JCP)的成员们已开始仔细考虑为这种编程语言的下一个版本Java SE 8添加什么功能特性。前段时间曝光将为Java 8提上议程的工作是:设计面向云计算的Java。近日又有提出了对Java 8语法上的改变:Java 8 将采用跟C#一样的Lambda句法。
lambda-dev在邮件列表宣布,Java的Lambda语法决定基于C#语法。这种语法在C#语言里已经使用很长时间了(C#在1.0时期便引入了委托类型,并在2.0里支持匿名函数,3.0对Lambda表达式提供支持)。
这种语法同时支持表达式和代码块。表示式的形式不需要大括号,并且在执行后返回结果。语法块的形式需要使用大括号,除非使用了return关键字,否则不会直接返回结果。邮件里也给出了示例:
C#的语法是:
- lambda = ArgList Arrow Body
- ArgList = Identifier
- | "("