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