Oracle推出首個Java 7閉包版本
原創【51CTO快譯】雖然關于Java 7閉包一直波瀾不斷,開發者們也對Java是否真的需要引入閉包存在爭議,但Oracle還是在兩天前放出了Java 7閉包的第一個版本。我們可以在測試項目中看到Java編譯器語法規則的演變。點此查看測試項目。
Oracle發布的最新版本有以下功能更新:
◆函數類型語法
◆函數類型的子類型
◆全面支持Lambda表達式
◆在lambda中對thrown/return類型的引用
在Oracle的更新說明中顯示,這里所提到的函數類型在默認情況下不會啟動,必須使用XDallowFunctionTypes來啟用。以下為示例:
type1,lambda表達式:
- 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
關于Java閉包
支持閉包的多數語言都將函數作為第一級對象,就是說這些函數可以存儲到變量中、作為參數傳遞給其他函數,最重要的是能夠被函數動態地創建和返回。對于Java是否應該引入閉包特性一直存在爭議,詳細請參考《百家爭鳴 Java需要引入閉包嗎?》。去年51CTO曾報道《Java 7決定包含閉包 發布日期推遲至2010年底》的消息,在Devoxx 2009上已基本確定在Java 7中對閉包的引入。
關于Java 7閉包的詳細介紹請參考《Java 7的第一類函數:學習閉包的使用》。
【編輯推薦】
原文:Java 7 : Oracle pushes a first version of closures
鏈接:http://www.baptiste-wicht.com/2010/05/oracle-pushes-a-first-version-of-closures/