Java學習之Java實現CallBack功能


    回調函數實際上就是在調用某個函數(通常是API函數)時,將自己的一個函數(這個函數為回調函數)的地址作為參數傳遞給那個函數。而那個函數在需要的時候,利用傳遞的地址調用回調函數,這時你可以利用這個機會在回調函數中處理消息或完成一定的操作。

定義三個類,分別是主函數類,callback函數的接口類,業務處理類,在業務處理類中,處理完業務之后,執行一個callback函數。

package comz;  
  
public class Main {  
    public static void main(String[] args) {  
        new TestCallBack().compute(1000, new ComputeCallBack() {  
  
            @Override  
            public void onComputeEnd() {  
                System.out.println("end back!!!");  
  
            }  
        });  
    }  
}  

這是主函數類。new了一個業務處理類來處理邏輯,並在處理完畢之后,執行callback函數。

package comz;  
  
public class TestCallBack {  
  
    public void compute(int n, ComputeCallBack callback) {  
        for (int i = 0; i < n; i++) {  
            System.out.println(i);  
        }  
        callback.onComputeEnd();  
    }  
}  

這是業務處理類。僅僅輸出一些數字,然后執行回調函數。

package comz;  
  
public interface ComputeCallBack {  
    public void onComputeEnd();  
}  

這是回調函數的接口。

--------------------------------------

運行上面的代碼,就會在輸出結束的時候調用在Main里面的callback函數,輸出

1 0,1,2,3,4,5,6,7,8,9,
2 call complete......

--------------------------------------

這里的原理是:

在主類中,新建業務類的時候,傳遞進去的第二個參數是一個實現了回調接口的匿名類對象。

在業務類中,我們調用了這個對象的onComputeEnd方法。在執行onComputeEnd的時候,jvm會找到這個對象的函數實現並調用。於是就輸出了end back!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM