鉴于Java 7 SE(标准版)现已正式发布,甲骨文和Java社区进程组织(JCP)的成员们已开始仔细考虑为这种编程语言的下一个版本Java SE 8添加什么功能特性。前段时间曝光将为Java 8提上议程的工作是:设计面向云计算的Java。近日又有提出了对Java 8语法上的改变:Java 8 将采用跟C#一样的Lambda句法。
创新互联建站成立于2013年,先为无极等服务建站,无极等地企业,进行企业商务咨询服务。为无极企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
lambda-dev在邮件列表宣布,Java的Lambda语法决定基于C#语法。这种语法在C#语言里已经使用很长时间了(C#在1.0时期便引入了委托类型,并在2.0里支持匿名函数,3.0对Lambda表达式提供支持)。
这种语法同时支持表达式和代码块。表示式的形式不需要大括号,并且在执行后返回结果。语法块的形式需要使用大括号,除非使用了return关键字,否则不会直接返回结果。邮件里也给出了示例:
C#的语法是:
- lambda = ArgList Arrow Body
- ArgList = Identifier
- | "(" Identifier [ "," Identifier ]* ")"
- | "(" Type Identifier [ "," Type Identifier ]* ")"
- Body = Expression
- | "{" [ Statement ";" ]+ "}"
这里是使用lambda表达式这种语法的一些例子:
- x => x + 1
- (x) => x + 1
- (int x) => x + 1
- (int x, int y) => x + y
- (x, y) => x + y
- (x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
- () => { System.out.println("I am a Runnable"); }
Lambda表达式的关键优势,在于它们会对参数进行类型推断。不过在某些情况下,编译器依然无法推断出正确类型(尤其是出现操作符重载的时候,例如:(x, y) => x + y 在Java编译器不知道x和y是int还是double时候)。一般来说,类型推断引擎都能自动得出正确的代码,如果需要更多提示,程序员也始终可以显示地增加类型信息。
不久的将来会发布支持新语法的编译器以供体验。
参考原文:http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html
【编辑推荐】
分享名称:Java 8决定采用跟C#一样的Lambda句法
分享网址:http://www.stwzsj.com/qtweb/news3/7103.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联