人們對(duì)Java7中是否應(yīng)該添加Closure這一特性鬧得沸沸揚(yáng)揚(yáng),由于在下習(xí)慣了在Groovy中用Closure優(yōu)雅地進(jìn)行編程,深深體會(huì)到Closure的強(qiáng)大,始終不理解為什么他們要為添加這么強(qiáng)大的特性而爭(zhēng)論不休。出于好奇,我搜了一下這Java中可能出現(xiàn)的褒貶不一的Closure,當(dāng)我看到提議中的Closure的語法,有點(diǎn)吃驚,為何?看看代碼的復(fù)雜程度就知道了:
變量聲明:
{
int
,String
=>
Number?
throws
?IOException}?xyzzy;
將求和功能賦值給變量plus:
{
int
,
int
=>
int
}?plus?
=
?{
int
?x,?
int
?y?
=>
?x
+
y};
循環(huán)遍歷map中的entry:
<
K,V,
throws
?X
>
void
?
for
?eachEntry(Map
<
K,V
>
?map,?{K,V
=>
void
?
throws
?X}?block)
????????
throws
?X?{
????
for
?(Map.Entry
<
K,V
>
?entry?:?map.entrySet())?{
????????block.invoke(entry.getKey(),?entry.getValue());
????}
}
Java5中添加的Generic(泛型)就已經(jīng)蠻麻煩了,東個(gè)尖括號(hào)< >西個(gè)尖括號(hào)< >。Java7也不甘示弱,東個(gè)大括號(hào){ }西個(gè)大括號(hào){ }。看來Java擁有巨斧后著實(shí)會(huì)強(qiáng)大許多,而Java程序員也不得不練就能揮舞巨斧的臂膀和身軀。同道們,讓我們一起修煉吧!
參考資料:
Closures for the Java Programming Language (v0.5)附:
Groovy輕松入門——Grails實(shí)戰(zhàn)之GORM篇
posted on 2007-04-09 16:29
山風(fēng)小子 閱讀(6059)
評(píng)論(21) 編輯 收藏 所屬分類:
Java