国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java接口回調模擬按鈕監聽

2019-11-15 00:06:07
字體:
來源:轉載
供稿:網友
java接口回調模擬按鈕監聽

做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進行處理    });


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦化市| 安图县| 木兰县| 岳西县| 宁安市| 轮台县| 连江县| 改则县| 钟祥市| 东源县| 集安市| 乌鲁木齐市| 芮城县| 鱼台县| 广汉市| 宁明县| 百色市| 九龙坡区| 沙坪坝区| 莱西市| 翁牛特旗| 长春市| 芦山县| 和顺县| 遵义县| 寻乌县| 英超| 航空| 宁河县| 德化县| 兰溪市| 叶城县| 博客| 河北区| 西昌市| 察雅县| 辛集市| 大宁县| 东乌珠穆沁旗| 北安市| 阜南县|