Java 8决定采用跟C#一样的Lambda句法

鉴于Java 7 SE(标准版)现已">正式发布,甲骨文和Java社区进程组织(JCP)的成员们已开始仔细考虑为这种编程语言的下一个版本Java SE 8添加什么功能特性。前段时间曝光将为Java 8提上议程的工作是:设计面向云计算的Java。近日又有提出了对Java 8语法上的改变:Java 8 将采用跟C#一样的Lambda句法。

相关618.html">负责人称:我们决定Java 8 将采用跟C#一样的Lambda句法,当然我们会做一些细微的改变。

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"); } 

参考原文:http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html

(责任编辑:蒙遗善)

时间: 2024-10-26 06:14:52

Java 8决定采用跟C#一样的Lambda句法的相关文章

Java 9 将采用新的版本字符串格式

在现有的版本编码格式使用了两年之后,从Java 9开始,Java版本方案将根据业内软件版本编码的最佳实践进行修改.使用或解析Java版本字符串的应用程序开发人员要注意了,因为这种变化可以会影响他们的应用程序. 正如JEP 223所阐述的那样,当前的版本方案会跳过某些版本号,而且安全补丁版本和更新版本混在一起.社区认为,该方案产生的版本号含义模糊.不直观.为了解决这个问题,Oracle引入了一种使用语义版本编码的新版本方案,就是说,Java版本字符串将依次包含如下三个部分:主版本号.小(维护)版本

深入探索Java 8 Lambda表达式

作者 Richard Warburton, Raoul Urma, Mario Fusco 译者 段建华 2014年3月,Java 8发布,Lambda表达式作为一项重要的特性随之而来.或许现在你已经在使用Lambda表达式来书写简洁灵活的代码.比如,你可以使用Lambda表达式和新增的流相关的API,完成如下的大量数据的查询处理: int total = invoices.stream() .filter(inv -> inv.getMonth() == Month.JULY) .mapToI

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

提高 Java 代码的性能

性能 尾递归转换能加快应用程序的速度,但不是所有的 JVM 都会做这种转换 很多算法用尾递归方法表示会显得格外简明.编译器会自动把这种方法转换成循环,以提高程序的性能.但在 Java 语言规范中,并没有要求一定要作这种转换,因此,并不是所有的 Java 虚拟机(JVM)都会做这种转换.这就意味着在 Java 语言中采用尾递归表示可能导致巨大的内存占用,而这并不是我们期望的结果.Eric Allen 在本文中阐述了动态编译将会保持语言的语义,而静态编译则通常不会.他说明了为什么这是一个重要问题,并

关于Java中文问题的几条分析原则

问题|中文   引言 尽管对于Java中文处理问题的讨论已不乏其数,但由于Java技术涉及内容广(J2EE包含了十几种相关技术),技术供应商繁多,面向Java的Web服务器.应用服务器以及JDBC数据库驱动等都没有官方的标准,所以Java应用在处理中文过程中出了存在固有的问题外也存在随着选用的服务器,驱动程序的不同而带来的Java中文问题的多变性,增加了问题的复杂度.那么,我们如何在这么纷繁的现象中找到问题的症结呢? Java中文问题的一般解决办法 事实上,Java的中文问题都是由于Java应用

Java中文问题及最优解决方法

解决|问题|中文 1.中文问题的来源 计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理.随着计算机的发展,为了适应世界其它民族的语言(当然包括我们的汉字),人们提出了UNICODE编码,它采用双字节编码,兼容英文字符和其它民族的双字节字符编码,所以,目前,大多数国际性的软件内部均采用UNICODE编码,在软件运行时,它获得本地支持系统(多数时间是操作系统)默认支持的编码格式,然后再将软件内部的UNICODE转化为本地系统默认支持

专家释疑:轻松提高Java代码的性能

性能 尾递归转换能加快应用程序的速度,但不是所有的 JVM 都会做这种转换,很多算法用尾递归方法表示会显得格外简明.编译器会自动把这种方法转换成循环,以提高程序的性能.但在 Java 语言规范中,并没有要求一定要作这种转换,因此,并不是所有的 Java 虚拟机(JVM)都会做这种转换.这就意味着在 Java 语言中采用尾递归表示可能导致巨大的内存占用,而这并不是我们期望的结果.Eric Allen 在本文中阐述了动态编译将会保持语言的语义,而静态编译则通常不会.他说明了为什么这是一个重要问题,并

JAVA - IO包的学习引导文章(摘抄)

什么是IO IO(Input/Output)是计算机输出/输出的接口.Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入.此外,Java也对块传输提供支持,在核心库java.nio中采用的便是块IO.关于NIO我们在后面还有专门的讨论. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较复杂.Java IO模型 Java的IO模型设计非常优秀,它使用Decor

Java游戏直棋(二)

本部分为电脑的人工智能. 为了加快AI的计算速度,必须对前面的设计进行少量的修改,并最终向VC平台转移.在用VC实现的游戏中,棋盘将采用BitBoard技术,棋子的显示将彻底和逻辑分开.目前JAVA版本仍然采用数组表示棋盘,主要是便于逻辑分析和设计. 先对第一个AI进行总结.FirstAI: package nicholas.game.chess; class FirstAI extends ChessPlayer { private ChessModel model[][][]; privat