新聞中心
鑒于Java 7 SE(標(biāo)準(zhǔn)版)現(xiàn)已正式發(fā)布,甲骨文和Java社區(qū)進(jìn)程組織(JCP)的成員們已開(kāi)始仔細(xì)考慮為這種編程語(yǔ)言的下一個(gè)版本Java SE 8添加什么功能特性。前段時(shí)間曝光將為Java 8提上議程的工作是:設(shè)計(jì)面向云計(jì)算的Java。近日又有提出了對(duì)Java 8語(yǔ)法上的改變:Java 8 將采用跟C#一樣的Lambda句法。

創(chuàng)新互聯(lián)建站成立于2013年,先為無(wú)極等服務(wù)建站,無(wú)極等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為無(wú)極企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
lambda-dev在郵件列表宣布,Java的Lambda語(yǔ)法決定基于C#語(yǔ)法。這種語(yǔ)法在C#語(yǔ)言里已經(jīng)使用很長(zhǎng)時(shí)間了(C#在1.0時(shí)期便引入了委托類型,并在2.0里支持匿名函數(shù),3.0對(duì)Lambda表達(dá)式提供支持)。
這種語(yǔ)法同時(shí)支持表達(dá)式和代碼塊。表示式的形式不需要大括號(hào),并且在執(zhí)行后返回結(jié)果。語(yǔ)法塊的形式需要使用大括號(hào),除非使用了return關(guān)鍵字,否則不會(huì)直接返回結(jié)果。郵件里也給出了示例:
C#的語(yǔ)法是:
- lambda = ArgList Arrow Body
- ArgList = Identifier
- | "(" Identifier [ "," Identifier ]* ")"
- | "(" Type Identifier [ "," Type Identifier ]* ")"
- Body = Expression
- | "{" [ Statement ";" ]+ "}"
這里是使用lambda表達(dá)式這種語(yǔ)法的一些例子:
- 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表達(dá)式的關(guān)鍵優(yōu)勢(shì),在于它們會(huì)對(duì)參數(shù)進(jìn)行類型推斷。不過(guò)在某些情況下,編譯器依然無(wú)法推斷出正確類型(尤其是出現(xiàn)操作符重載的時(shí)候,例如:(x, y) => x + y 在Java編譯器不知道x和y是int還是double時(shí)候)。一般來(lái)說(shuō),類型推斷引擎都能自動(dòng)得出正確的代碼,如果需要更多提示,程序員也始終可以顯示地增加類型信息。
不久的將來(lái)會(huì)發(fā)布支持新語(yǔ)法的編譯器以供體驗(yàn)。
參考原文:http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html
【編輯推薦】
- Java 8整裝待發(fā) 圖謀云計(jì)算
- Java 7是蜜糖還是毒藥?
- JRuby和Java 7 我們可以期待什么
- 別用Java 7?你是在開(kāi)玩笑嗎?
- 漫談Java 7的新特性與C# 2.0的相似之處
當(dāng)前題目:Java 8決定采用跟C#一樣的Lambda句法
文章路徑:http://m.fisionsoft.com.cn/article/dpccsod.html


咨詢
建站咨詢
