国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java 實現回調代碼實例

java 實現回調代碼實例

2020-05-29 14:39java教程網 JAVA教程

本文主要介紹Java的回調機制,并附實例代碼以供大家參考學習,有需要的小伙伴可以看下

JAVA實現回調

熟悉MS-Windows和X Windows事件驅動設計模式的開發人員,通常是把一個方法的指針傳遞給事件源,當某一事件發生時來調用這個方法(也稱為“回調”)。Java的面向對象的模型目前不支持方法指針,似乎不能使用這種方便的機制。

Java支持interface,通過interface可以實現相同的回調。其訣竅就在于定義一個簡單的interface,申明一個被希望回調的方法。

例如,假定當某一事件發生時會得到通知,我們可以定義一個interface:

java" id="highlighter_473368">
?
1
2
3
4
public interface InterestingEvent {
 // 這只是一個普通的方法,可以接收參數、也可以返回值
 public void interestingEvent();
}

這樣我們就有了任何一個實現了這個接口類對象的手柄grip。

當一事件發生時,需要通知實現InterestingEvent 接口的對象,并調用interestingEvent() 方法。

?
1
2
3
4
5
6
7
8
9
class EventNotifier {
 private InterestingEvent ie;
 private boolean somethingHappened;
 
 public EventNotifier(InterestingEvent event) {
  ie = event;
  somethingHappened = false;
  }
public void doWork() {<br>        if (somethingHappened) {<br>            // 事件發生時,通過調用接口的這個方法來通知<br>            ie.interestingEvent();<br>        }        <br>    }<br>}

在這個例子中,用somethingHappened 來標志事件是否發生。

希望接收事件通知的類必須要實現InterestingEvent 接口,而且要把自己的引用傳遞給事件的通知者。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class CallMe implements InterestingEvent {
 private EventNotifier en;
 
 public CallMe() {
  // 新建一個事件通知者對象,并把自己傳遞給它
  en = new EventNotifier(this);
 }
 
 // 實現事件發生時,實際處理事件的方法
 public void interestingEvent() {
  // 這個事件發生了,進行處理
 }
}

以上是通過一個非常簡單的例子來說明Java中的回調的實現。

當然,也可以在事件管理或事件通知者類中,通過注冊的方式來注冊多個對此事件感興趣的對象。

1. 定義一個接口InterestingEvent ,回調方法nterestingEvent(String event) 簡單接收一個String 參數。

?
1
2
3
interface InterestingEvent {
 public void interestingEvent(String event);
}

2. 實現InterestingEvent接口,事件處理類

?
1
2
3
4
5
6
7
8
9
class CallMe implements InterestingEvent {
 private String name;
 public CallMe(String name){
  this.name = name;
 }
 public void interestingEvent(String event) {
  System.out.println(name + ":[" +event + "] happened");
 }
}

3. 事件管理者,或事件通知者

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class EventNotifier {
 private List<CallMe> callMes = new ArrayList<CallMe>();
 
 public void regist(CallMe callMe){
  callMes.add(callMe);
 }
 
 public void doWork(){
  for(CallMe callMe: callMes) {
   callMe.interestingEvent("sample event");
  }
 }
}

4. 測試

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CallMeTest {
 public static void main(String[] args) {
  EventNotifier ren = new EventNotifier();
  CallMe a = new CallMe("CallMe A");
  CallMe b = new CallMe("CallMe B");
 
  // regiest
  ren.regist(a);
  ren.regist(b);
  
  // test
  ren.doWork(); 
 }
}

以上就是對Java回調機制的介紹,有需要的同學可以參考下。

延伸 · 閱讀

精彩推薦
  • JAVA教程談談Java中Volatile關鍵字的理解

    談談Java中Volatile關鍵字的理解

    volatile這個關鍵字可能很多朋友都聽說過,或許也都用過。在Java 5之前,它是一個備受爭議的關鍵字,因為在程序中使用它往往會導致出人意料的結果,本...

    小眼兒3612020-04-14
  • JAVA教程eclipse怎么引入spring boot項目插件的方法

    eclipse怎么引入spring boot項目插件的方法

    這篇文章主要介紹了eclipse怎么引入spring boot項目插件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的...

    莫采4272019-07-08
  • JAVA教程MyBatis批量插入(insert)數據操作

    MyBatis批量插入(insert)數據操作

    本文給大家分享MyBatis批量插入(insert)數據操作知識,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧 ...

    chenzhou1235202482020-05-20
  • JAVA教程Spring Cloud Alibaba Nacos 入門詳解

    Spring Cloud Alibaba Nacos 入門詳解

    這篇文章主要介紹了Spring Cloud Alibaba Nacos入門詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    幻楚4502019-06-22
  • JAVA教程java servlet結合Oracle搭建java的web開發環境

    java servlet結合Oracle搭建java的web開發環境

    今天我將與大家分享一下我學JAVA WEB寫的一些小實例 ,我個人是不太喜歡書本上的晦澀的概念的,所以我花了更多的時間在一些應用實例上,我覺得這樣的...

    hebedich2262020-03-13
  • JAVA教程Struts2在打包json格式的懶加載異常問題

    Struts2在打包json格式的懶加載異常問題

    這篇文章主要為大家詳細介紹了Struts2在打包json格式的懶加載異常問題,感興趣的小伙伴們可以參考一下 ...

    eson_151202020-05-13
  • JAVA教程JVM Tomcat性能實戰(推薦)

    JVM Tomcat性能實戰(推薦)

    下面小編就為大家帶來一篇JVM Tomcat性能實戰(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 ...

    jingxian5032020-05-01
  • JAVA教程Java使用Deque實現堆棧的方法

    Java使用Deque實現堆棧的方法

    這篇文章主要介紹了Java使用Deque實現堆棧的方法,實例分析了java簡單實現堆棧的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下 ...

    鑒客2222019-12-27
主站蜘蛛池模板: 视频一区在线 | 九九精品在线 | 日本在线一区二区三区 | 久久久久久久国产精品 | 欧美日韩午夜 | 国产精品久久久久久久久 | 国产精品美女久久久久久久久久久 | jizzz日本 | 精品久 | 在线观看91免费视频 | a一级免费视频 | 亚洲啊v| 视频一区二区在线观看 | 亚洲专区中文字幕 | www伊人 | 久久一区二区视频 | 久久中文字幕一区 | 黄色片网址在线观看 | 小川阿佐美88av在线播放 | 成人精品电影 | 亚洲国产精品成人va在线观看 | 91精品国产一区二区三区 | 欧美日本精品 | 黄色高清网站 | 日韩午夜影院 | 日韩成人中文字幕 | 亚洲成人一区二区 | 欧美综合一区二区三区 | 欧美成人精品一区二区三区 | 精品国产欧美一区二区 | 国产精品久久久久国产a级 成人a在线视频 | 久久综合久久综合久久综合 | 国产亚洲精品精品国产亚洲综合 | 欧美 日韩 国产 成人 在线 91 | 成人欧美一区二区三区白人 | 亚洲 欧美 日韩 在线 | 午夜影视 | 亚洲色图在线播放 | 一级黄色片在线 | 99精品一区 | 国产精品久久久久久亚洲调教 |