Java介面回調實現按鈕監聽

來源:互聯網
上載者:User

標籤:

做Android開發的時候,經常碰到View的事件監聽,雖然一直在用,但從未思考它的實現原理。還有回呼函數雖然經常聽說,但是總感覺很暈,一想腦袋就開始亂了。所以今天就寫點東西來理一下思路。

回呼函數

以下是維基百科上的定義:

在電腦程式設計中,回呼函數,或簡稱回調(Callback 即call then back 被主函數調用運算後會返回主函數),是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼的引用。這一設計允許了底層代碼調用在高層定義的子程式。

光看定義可能晦澀難懂,下面還是回到標題,用Java介面回調實現按鈕監聽。

Java介面回調

我這裡的代碼基本就仿照Android的按鈕監聽方式。

首先定義一個介面,裡面定義回呼函數onClick。

public interface OnClickListener {    void onClick(Button b);}

然後我們來實現Button類。

public class Button {    private OnClickListener listener;        public void setOnClickListener(OnClickListener listener){        this.listener=listener;    }        public void printSomeThing(String msg){        System.out.println(msg);    }    public void click() {        listener.onClick(this);    }}

最後在main函數中調用。

public class CallBackTest {        public static void main(String[] args) {        Button button=new Button();        button.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(Button b) {                b.printSomeThing("按鈕被點擊");            }        });                System.out.println("開始類比點擊");        System.out.println("真正的點擊應該由系統來調用");        button.click();    }}

大概過程就是button.click()調用回呼函數OnClickListener.onClick,但是這個onClick的實現是在button.setOnClickListener裡面的匿名內部類實現的。語言還是表達不太清楚,所以還是多看代碼吧。

JS中的回呼函數

 順便提一下JS中的回呼函數吧。因為JS的函數也是對象,可以直接作為參數傳遞,所以實現起來很簡單。

    //類比伺服器返回資料    var getInfo=function(id,callback){        var result="<div>Something get By"+id+"</div>";        setTimeout(function(){           callback(result);        },1000);//定時1秒返回資料    }    //調用    getInfo(id,function(result){        //對返回的result進行處理    });

 

Java介面回調實現按鈕監聽

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.