Java中的閉包(Closure)和回撥

Java學習之平凡之路發表於2016-06-07

上網看了許多關於Java中的閉包(Closure)和回撥的博文,總算是弄清晰了,再次寫下自己的筆記

  1、閉包

定義:閉包允許你將一些行為封裝,將它像一個物件一樣傳來遞去,而且它依然能夠訪問 到原來第一次宣告時的上下文。 

閉包允許我們建立函式指標,並把它們作為引數傳遞(在JAVA中,閉包是通過“介面+內部類”實現

2、回撥:就是程式設計師A寫了一段程式(程式a),其中預留有回撥函式介面,並封裝好了該程式。程式設計師B要讓a呼叫自己的程式b中的一個方法,於是,他通過a中的介面回撥自己b中的方法。

計算機程式設計中,回撥函式,或簡稱回撥,是指通過函式引數傳遞到其它程式碼的,某一塊可執行程式碼引用。這一設計允許了底層程式碼呼叫在高層定義的子程式 但是在Java裡面,無法傳遞方法指標,所以我們只能使用介面來實現回撥。

3、為什麼需要閉包。
  閉包的價值在於可以作為函式物件或者匿名函式,持有上下文資料,作為第一級物件進行傳
遞和儲存。閉包廣泛用於回撥函式、函數語言程式設計中。

ps:

個人理解:定義一個介面,匿名內部類實現該介面(該函式方法(就為回撥函式)),然後set進一個類留有介面的呼叫類裡面,該類呼叫的實際上是匿名內部類的方法。(實際上就是將一個程式碼塊/函式以引數的形式傳遞)

個人順序參考

1、http://www.cnblogs.com/chenjunbiao/archive/2011/01/26/1944417.html

2、http://blog.sina.com.cn/s/blog_8d2da7430100xjk5.html

3、http://blog.csdn.net/longyulu/article/details/35236041

4、http://www.cnblogs.com/heshuchao/p/5376298.html    很形象生動的講述!~



相關文章