Posted on 2006-12-27 10:50
jwethand 閱讀(149)
評(píng)論(0) 編輯 收藏
類似Groovy、Python、Ruby這樣的語言中都存在閉包的概念,Java、C++、C#這樣的語言都不支持閉包,什么是閉包呢?記得以前看到的一篇文章中這樣說過“對(duì)象是附帶過程的數(shù)據(jù),閉包是附帶數(shù)據(jù)的過程”。聽起來有點(diǎn)抽象,簡(jiǎn)單一點(diǎn)講閉包就是“一段封閉的代碼”(block),下面是Java7規(guī)范草案中有關(guān)閉包的一段代碼:
int(int) plus2b = (int x) {return x+2; };
閉包可以包含參數(shù)和返回結(jié)果,這比起Java中的匿名內(nèi)部類要要簡(jiǎn)單靈活的多。個(gè)人認(rèn)為Java中增加閉包函數(shù)除了增加靈活性;而且更易于對(duì)代碼進(jìn)行抽象;同時(shí)可以減少臨時(shí)對(duì)象對(duì)內(nèi)存的開銷,雖然Java有自動(dòng)垃圾回收機(jī)制,但是有時(shí)候在一些應(yīng)用程序中臨時(shí)對(duì)象的存在可能就是性能的瓶頸。目前Java7中的閉包部分的規(guī)范還在起草階段,期望未來的Java中可以增加更多的動(dòng)態(tài)語言的支持。