java接口回調和回調函數

一、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();
    }
}

以上就是完整的回調函數的工做機制。

相關文章
相關標籤/搜索