阅读更多

12顶
7踩

编程语言

翻译新闻 Java 8决定采用跟C#一样的Lambda句法

2011-09-09 15:31 by 见习编辑 songshuang 评论(28) 有15825人浏览
Java 7 正式版已经发布,甲骨文和Java社区进程组织(JCP)的成员们开始考虑为这种编程语言的下一个版本Java SE 8添加新特性了。

经过对备选方案的筛选,JCP团队决定Java 8 将采用跟C#一样的Lambda句法,一些细节还在仔细考虑,涉及到方法引用的语法问题也还在讨论中。

选择这种语法的理由

  • 在主要方面权衡,Lambda都被评价为“相当不错”(尽管和其他语法一样有瑕疵),无论使用“小”的Lambda表达式(通常用作方法参数)或是使用“大”的Lambda表达式(多语句),均表现很突出。
  • 尽管进行了广泛探索,但是还没有发现比这更好的替代方案。因此,最好在与Java相似的两种语言(C#和Scala)中,选择好用的语法,而不是创造新语法。
不久将首先实现一个编译器。

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

12
7
评论 共 28 条 请登录后发表评论
8 楼 csywashing 2011-09-10 23:31
把匿名函数变成表达式。
7 楼 H_eaven 2011-09-10 21:05
表示看不懂, 
   out了吗?
6 楼 lzy5710303 2011-09-10 15:47
java开始学C#了
5 楼 hareamao 2011-09-10 09:34
zjumty 写道
早就该这功能了.

是啊,等了很久了。
4 楼 zcq100 2011-09-10 09:30
整脚本语言得了
3 楼 tinycool2008 2011-09-10 01:09
c#有lambda表达式之后 才有的linq

难道java也要出个linq了?

有意识了
2 楼 油炸大龙虾 2011-09-10 00:53
c#有Linq。比光有lambda好用很多,java学他干啥??不如早日关闭了,给groovy发展吧。
1 楼 zjumty 2011-09-09 18:57
早就该这功能了.

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 深入理解Java Lambda表达式,匿名函数,闭包

    对于Lambda表达式一直是知其然不知其所以然,为了搞清楚什么是Lambda表达式,以及Lambda表达式的用法和作用,本文应运而生当做学习笔记分享出来,欢迎指正交流。

  • 比较C#和Java

    但由于C#也被描述为一个C++和Java的混合体,并添加了一些新特性,引入了一些变化,因此C#和Java自然也有很多不一样的地方。 这个条目描述了二者总体上的相似性,并列举了二者的不同点。   目录 1语言 1.1对象...

  • 7.8 W 字总结!Java 8—Java 10 特性详解

    点击关注公众号,回复“1024”获取2TB学习资源!‍‍Java现在发布的版本很快,每年两个,但是真正会被大规模使用的是三年一个的TLS版本。‍‍每3年发布一个TLS,长期维护版本。意味着...

  • java lambda 高阶函数_匿名方法,Lambda表达式,高阶函数

    匿名方法c#2.0引入匿名方法,不必创建单独的方法,因此减少了所需的编码系统开销。 常用于将委托和匿名方法关联,例如1. 使用委托和方法关联:this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_...

  • c#与java的区别

    但由于C#也被描述为一个C++和Java的混合体,并添加了一些新特性,引入了一些变化,因此C#和Java自然也有很多不一样的地方。 这个条目描述了二者总体上的相似性,并列举了二者的不同点。 语言[编辑] ...

  • JAVA java学习(8)——————java和C/C++的关系和区别

    Java、c# 便就是面向对象编程中的的代表性语言。 Java和C/C++的关系和区别 C 语言 19 世纪 70 年代初问世,1978 年美国电话电报公司(AT&T)贝尔实验室正式发布C语言。 C++ 在 C 基础上,1983 年贝尔实验室推出了 ...

  • java_note8

    面向对象总结,字符串正则表达式, String类,文本块text block,java11字符串新特性方法,string api,将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成

  • Java学习DAY2

    但 Java 的句法更清晰、规模更小、更易学。Sun 公司曾对多种程序设计语言进行分析研究,取其精华去其糟粕,最终推出了 Java。Java 从根本上解决了 C++ 的固有缺陷,形成了新一代面向对象的程序设计语言。 Java 和 C/...

  • 比较C Sharp和Java

    但由于C#也被描述为一个C++和Java的混合体,并添加了一些新特性,引入了一些变化,因此C#和Java自然也有很多不一样的地方。 这个条目描述了二者总体上的相似性,并例举了二者的不同点。 语言 对象处理 ...

  • 【编程实践】编程语言之 Smalltalk

    Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:C++,C#,Objective-C,Actor,Java和Ruby等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。

  • lambda 匿名内部类_从内部投影Lambda。 布莱恩·格茨专访

    lambda 匿名内部类 正如InfoQ报道的那样 ,Oracle在今年四月宣布将备受期待的Java 8的发布推迟到2014年第一季度。 OracleJava平台组首席架构师Mark Reinhold在他的博客中说: “超越M6的最重要的工作与Lambda...

  • 情感分析的入门简介,从词法、句法分析开始,到基础模型及深度学习模型的介绍

    目前,业界比较流行的句法分析工具有如下几种: Stanford Parser Stanford Parser是Stanford NLP团队开发的通用句法分析器,它有Python、Java、C++和MATLAB四个版本的API接口。 下载地址:...

  • 与Brian Goetz聊Java的数据类

    \\\作为Oracle的Java语言架构师,Brian Goetz一直致力于Java编程语言在生产力和性能上的日臻完美。最近,Goetz撰文绍了数据类(data classes)这一可能整合到Java语言中的实验性理念。他的研究工作很好地证明了,...

  • MongoDB学习(翻译2)

    C#驱动之LINQ教程 介绍 本教程涵盖了1.8发布版本对linq查询的支持。 开始本教程之前,你应该至少阅读下C#驱动教程关于C#驱动的介绍 快速开始 首先,添加下面命名空间到您的程序中: using MongoDB.Driver.Linq; ...

  • C#3.0与.NET

    第一章 .NET之道本章的目的在于为本书其余部分建立起一个概念性的框架,由.NET之前各种技术的局限性和复杂性开始,然后综述了.NET和C#是如何试图简化这种状况的。 以前看过不少.NET相关书籍,一般第一章都是简述...

  • setuptools-33.1.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 超级简单的地图操作工具开发可疑应急,地图画点,画线,画区域,获取地图经纬度等

    解压密码:10086007 参考:https://blog.csdn.net/qq_38567039/article/details/138872298?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22138872298%22%2C%22source%22%3A%22qq_38567039%22%7D 获取地图经纬度等 超级简单的地图操作工具开发可疑应急,echars的地图画点,画线,画区域 <script type="text/javascript" src="echarts.min.js"></script> Uncomment this line if you want to use map <script type="text/javascript" src="china.js"></script> <script type="text/javascript" src="world.js"></script>

  • java进销存管理系统(jsp+mssql).zip

    java进销存管理系统(jsp+mssql)

  • launcher (1).apk

    launcher (1).apk

Global site tag (gtag.js) - Google Analytics