人們對Java7中是否應(yīng)該添加Closure這一特性鬧得沸沸揚揚,由于在下習(xí)慣了在Groovy中用Closure優(yōu)雅地進行編程,深深體會到Closure的強大,始終不理解為什么他們要為添加這么強大的特性而爭論不休。出于好奇,我搜了一下這Java中可能出現(xiàn)的褒貶不一的Closure,當(dāng)我看到提議中的Closure的語法,有點吃驚,為何?看看代碼的復(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)蠻麻煩了,東個尖括號< >西個尖括號< >。Java7也不甘示弱,東個大括號{ }西個大括號{ }。看來Java擁有巨斧后著實會強大許多,而Java程序員也不得不練就能揮舞巨斧的臂膀和身軀。同道們,讓我們一起修煉吧!
參考資料:
Closures for the Java Programming Language (v0.5)附:
Groovy輕松入門——Grails實戰(zhàn)之GORM篇
posted on 2007-04-09 16:29
山風(fēng)小子 閱讀(6061)
評論(21) 編輯 收藏 所屬分類:
Java