Oracle推出首個(gè)Java 7閉包版本
原創(chuàng)【51CTO快譯】雖然關(guān)于Java 7閉包一直波瀾不斷,開(kāi)發(fā)者們也對(duì)Java是否真的需要引入閉包存在爭(zhēng)議,但Oracle還是在兩天前放出了Java 7閉包的第一個(gè)版本。我們可以在測(cè)試項(xiàng)目中看到Java編譯器語(yǔ)法規(guī)則的演變。點(diǎn)此查看測(cè)試項(xiàng)目。
Oracle發(fā)布的最新版本有以下功能更新:
◆函數(shù)類型語(yǔ)法
◆函數(shù)類型的子類型
◆全面支持Lambda表達(dá)式
◆在lambda中對(duì)thrown/return類型的引用
在Oracle的更新說(shuō)明中顯示,這里所提到的函數(shù)類型在默認(rèn)情況下不會(huì)啟動(dòng),必須使用XDallowFunctionTypes來(lái)啟用。以下為示例:
type1,lambda表達(dá)式:
- int i1 = #()(3).(); //i1 = 3
- Integer i2 = #()(3).(); //i2 = 3
- int i3 = #(int x)( x + 1 ).(3); //i3 = 4
- int i4 = #(Number x)(x.intValue()).(new Float(3.0f)); //i4 = 3
type2
- int i1 = #(){ return 3; }.(); //i1 = 3
- Integer i2 = #(){ return 3; }.(); //i2 = 3
- int i3 = #(int x){ return x + 1; }.(3); //i3 = 4
- int i4 = #(Number x){ return x.intValue(); }.(new Float(3.0f)); //i4 = 3
關(guān)于Java閉包
支持閉包的多數(shù)語(yǔ)言都將函數(shù)作為第一級(jí)對(duì)象,就是說(shuō)這些函數(shù)可以存儲(chǔ)到變量中、作為參數(shù)傳遞給其他函數(shù),最重要的是能夠被函數(shù)動(dòng)態(tài)地創(chuàng)建和返回。對(duì)于Java是否應(yīng)該引入閉包特性一直存在爭(zhēng)議,詳細(xì)請(qǐng)參考《百家爭(zhēng)鳴 Java需要引入閉包嗎?》。去年51CTO曾報(bào)道《Java 7決定包含閉包 發(fā)布日期推遲至2010年底》的消息,在Devoxx 2009上已基本確定在Java 7中對(duì)閉包的引入。
關(guān)于Java 7閉包的詳細(xì)介紹請(qǐng)參考《Java 7的第一類函數(shù):學(xué)習(xí)閉包的使用》。
【編輯推薦】
- 正方反方 Java前景眾說(shuō)紛紜
- Java規(guī)范第二次面臨分裂危機(jī)
- Google、VMware讓Java扛起云計(jì)算大旗
- Java云計(jì)算緩存 程序全部運(yùn)行在內(nèi)存中
原文:Java 7 : Oracle pushes a first version of closures
鏈接:http://www.baptiste-wicht.com/2010/05/oracle-pushes-a-first-version-of-closures/