日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

谈谈我对Java中CallBack的理解

發布時間:2025/3/13 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈我对Java中CallBack的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  CallBack是回調的意思,熟悉Windows編程的人對"回調函數"這四個字一定不會陌生,但是Java程序員對它可能就不太了解了。"回調函數"或者"回調方法"是軟件設計與開發中一個非常重要的概念,掌握"回調函數"的思想對程序員來說(不管用哪種語言)是非常必要的。

  那么什么是回調函數呢?我認為,回調函數就是預留給系統調用的函數,而且我們往往知道該函數被調用的時機。這里有兩點需要注意:第一點,我們寫回調函數不是給自己調用的,而是準備給系統在將來某一時刻調用的;第二點,我們應該知道系統在什么情形下會調用我們寫的回調函數。

  這里舉個現實生活中"回調函數"的例子來幫助大家更好的理解。我們平時考試答題的第一件事是干嘛?沒錯,是寫上學號和姓名。這里注意了,我們填寫學號和姓名不是給自己看的(即該方法不是給自己調用的),而是給老師登記分數時看的(預留給系統將來調用),這其實就是一個回調的應用。

  下面再來看一下Android中應用到"回調"的場景。

  場景一:

Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(
new Button.OnClickListener() {

//回調函數
@override
publicvoid onClick(View v) {
buttonTextView.setText(
"按鈕被點擊了");
}
});

  上面的代碼給按鈕加了一個事件監聽器,這其實就是"回調"最常見的應用場景之一。我們自己不會顯示地去調用onClick方法。用戶觸發了該按鈕的點擊事件后,它會由Android系統來自動調用。

  場景二:

@Override
publicvoid onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
// You code...
}

@Override
publicvoid onResume() {
super.onResume();
// You code...
}

  上面的方法大家就更熟悉了,這是Android系統在Activity類中設置的回調函數,在Activity生命周期的不同階段,Android系統會自動調用相應的方法(onCreate, onPause, onResume,onDestroy等等)

  以上是兩個Android中用到"回調"的場景,他們的代碼實現可能不同,但是思想上是相近的,都是"回調"思想的體現。下面,我們在Java中分別模擬這兩個場景。

  首先模擬注冊事件監聽器。先寫一個監聽器接口

package com.listener;

/**
* 點擊監聽器接口
*
@author CodingMyWorld
*
*/
publicinterface MyOnClickListener {
publicvoid onClick();
}

  然后寫一個我們自己的Button類

package com.listener;

publicclass MyButton {
private MyOnClickListener listener;

/**
* 設置具體點擊監聽器
*
@param listener 點擊監聽器實現類
*/
publicvoid setOnClickListener(MyOnClickListener listener) {
this.listener = listener;
}

/**
* 按鈕被點擊
*/
publicvoid doClick() {
listener.onClick();
}
}

  最后模擬Client端的注冊監聽器和觸發點擊操作。

package com.listener;

publicclass Client {
publicstaticvoid main(String[] args) {
MyButton button
=new MyButton();
//注冊監聽器
button.setOnClickListener(new MyOnClickListener() {

@Override
publicvoid onClick() {
System.out.println(
"按鈕被點擊了");

}

});
//模擬用戶點擊
button.doClick();
}
}

  以上就是"回調"思想在Java中事件監聽的運用,我們再模擬第二個場景,"回調"在activity生命周期方法調用的體現。由于比較簡單,我就不多做解釋了,大家直接看代碼。

package com.activity;

publicabstractclass Activity {
protectedvoid onCreate() {
System.out.println(
"創建準備~~~~~~~");
}

protectedvoid onDestroy() {
System.out.println(
"銷毀準備~~~~~~~~");
}
}
package com.activity;

publicclass ConcreteActivity extends Activity {
@Override
protectedvoid onCreate() {
super.onCreate();
System.out.println(
"創建中!!!");
}

@Override
protectedvoid onDestroy() {
super.onDestroy();
System.out.println(
"銷毀中!!!");
}
}
package com.activity;

publicclass Client {
publicstaticvoid main(String[] args) {
Activity activity
=new ConcreteActivity();
activity.onCreate();
activity.onDestroy();
}
}

  OK,我對CallBack的理解就談到這,有不對和能改進的地方也希望大家指正,多多交流。

轉載于:https://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html

總結

以上是生活随笔為你收集整理的谈谈我对Java中CallBack的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。