2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Java 决定使用 C#及 Scala 的 Lambda 语法

  • 2011-09-10
  • 本文字数:853 字

    阅读完需:约 3 分钟

Java 8 里最重要的更新之一便是引入了 Lambda 语法,这样可以将匿名函数作为参数或变量。然而,这方面的语法始终未能确定下来,也曾经有过投票,咨询社区更适应哪种语法。

最近,lambda-dev 在邮件列表宣布,Java 的Lambda 语法决定基于C#语法。这种语法在C#语言里已经使用很长时间了(C#在1.0 时期便引入了委托类型,并在2.0 里支持匿名函数,3.0 对Lambda 表达式提供支持)。

从调查结果来看,其他一些语法选择(例如 BGGA )相对别的设计并没有表现出明显的优势。而在 C#和 Scala 中已经长时间使用的语法体验,意味着会有大量程序员已经熟悉此类语法了(C#和 Scala 的主要区别,在于匿名函数的参数如何标识其类型:C#使用“int foo”,而 Scala 使用“foo: int”——人们很容易适应这种细微区别。Java 会使用 C#的形式“int foo”,因为这已经是 Java 语言的表示方法了)。

我们进行了很广泛的探索,但是最终发现没有哪种选择是明显的赢家(每种形式都有好的方面和不那么好的方面,也没有哪种形式明显好过其他的)。因此,与重新发明一种新的语法相比,我们认为还是选择一种在两种和 Java 比较相似的语言里——C#和 Scala——已经得到证明的语法比较合适。

这种语法同时支持表达式和代码块。表示式的形式不需要大括号,并且在执行后返回结果。语法块的形式需要使用大括号,除非使用了 return 关键字,否则不会直接返回结果。邮件里也给出了示例:

复制代码
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 时候)。一般来说,类型推断引擎都能自动得出正确的代码,如果需要更多提示,程序员也始终可以显示地增加类型信息。

不久的将来会发布支持新语法的编译器以供体验。

2011-09-10 05:464733
用户头像

发布了 157 篇内容, 共 58.9 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

Color Wheel for Mac(mac色轮工具)v8.5中文激活版

Rose

AI口语练习APP的对话练习

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI口语学习

干货!RPA 化解电商对账复杂流程全解析

Techinsight

电商 电商节 AI Agent

浅谈Tox之一

天翼云开发者社区

Python 自动化测试 Tox

MES中的四大现场执行管理模式详解

万界星空科技

数字化转型 制造业 mes 万界星空科技mes 生产管理MES系统

Elasticsearch:使用阿里云 AI 服务进行向量化和重新排名

阿里云大数据AI技术

人工智能 elasticsearch Qwen DeepSeek

JetBrains WebStorm v2024.3.4 (JavaScript集成开发环境) 中文激活版

Rose

Red Giant for Mac2025(红巨人调色插件套装包含Trapcode、Magic Bullet、VFX)

Rose

绕过 RAG 实时检索瓶颈,缓存增强生成(CAG)如何助力性能突破?

Baihai IDP

程序员 AI LLMs GenAI CAG

Capture One 23 Pro:专业摄影师的终极RAW编辑工具

Rose

仓库管理 RPA 技术全解析:优势、应用场景与厂商

Techinsight

RPA Agent 仓库管理系统

从德勤“小勤人”说起:财务RPA如何革新财务工作全流程?

Techinsight

RPA 财务管理 财务办公 Agent智能体

TechSmith Snagit v2024.4.1 中文版 mac/win最强截图工具

Rose

MacDroid Pro for mac(安卓手机数据传输助手)2.3激活版

Rose

课程质量评估系统(源码+文档+讲解+演示)

深圳亥时科技

京东联盟广告生成式推荐探索与实践-DPO多目标优化

京东零售技术

Typora:极简主义者的Markdown写作神器

Rose

观测云产品更新 | 可用性监测、场景图表、指标管理等优化

观测云

产品迭代

法院信息化 4.0 版,RPA 如何革新司法流程?

Techinsight

法院 信息化建设 RPA Agent Agent智能体

开源创意点亮生态未来 第二届OpenHarmony创新应用挑战赛圆满收官

科技热闻

全面开测 - 零门槛,即刻拥有DeepSeek-R1满血版,百万token免费用

小隐乐乐

JetBrains CLion v2024.3.4中文激活安装教程 附永久密钥

Rose

加快培育新质生产力,天翼云息壤智算一体机引领国产AI新征程

科技热闻

服装智能制造软件平台(源码+文档+讲解+演示)

深圳亥时科技

35W+京东商家共同选择的京点点AIGC平台,内容生成妙在哪里? | 京东零售技术实践

京东零售技术

2025新趋势:传统车企数字化转型有新招啦!

Techinsight

AI RPA 车企 车企数字化 Agent智能体

人工智能丨ChatGPT 免费开放网络搜索,能否挑战 Google 的搜索霸主地位?

测试人

Beyond Compare 5:文件对比与同步的终极工具

Rose

「工业4.0」智慧化工厂解决方案,智慧化工园区总体规划设计方案

金陵老街

智慧园区 智慧化工园区

AI口语练习APP的主要功能

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI口语学习

Java决定使用C#及Scala的Lambda语法_Java_Alex Blewitt_InfoQ精选文章