一、java的接口定義以及向上轉型是理解回調的基礎;java
使用接口的核心緣由:爲了可以向上轉型爲多個基類型。即利用接口的多實現,可向上轉型爲多個接口基類型。ide
二、匿名類。函數
代碼隨處可見new SthInterface()註冊接口回調。測試
感謝csdn兩篇文章讓我完全理解回調函數:this
其實我很願意理解網上那個關於打電話需求幫助的回調函數例子spa
在此我也寫了一個與此相似的例子:code
一、首先定義一個接口(即回調接口)(幫助接口,能夠向張三需求幫助,也能夠向李四需求幫助,具體須要什麼幫助,後期綁定本身實現。)orm
public interface HelperInterface { void execute(); }
二、咱們可讓張三幫助咱們解決問題(固然找李四或者王五等)接口
public class HelperZhangsan implements HelperInterface{ @Override public void execute() { System.out.println(This is zhangsan_helper.You can also ask lisi_helper!!); } }
三、尋求幫助的類,他必須持有幫助的回調接口,由於找不到張三,能夠找李四,只要回調接口不變,總能夠找到幫助的類。回調函數
public class Ask { private HelperInterface helperInterface; public void setHelperInterface(HelperInterface helperInterface){ //註冊 this.helperInterface = helperInterface; } public void resultForAsk(){ helperInterface.execute(); } }
四、測試代碼類
public class Test { public static void main(String[] args) { Ask ask = new Ask(); ask.setHelperInterface(new HelperZhangsan()); ask.resultForAsk(); } }
其實不少時候咱們更願意以下這種寫法,也即找個匿名接口實現類幫助咱們():
public class Test { public static void main(String[] args) { Ask ask = new Ask(); ask.setHelperInterface(new HelperInterface() { @Override public void execute() { System.out.println(hell dsc); } }); ask.resultForAsk(); } }
以上就是完整的回調函數的工做機制。