Java実装コールバックのコード例

高洛峰
リリース: 2017-01-24 13:30:25
オリジナル
1265 人が閲覧しました

コールバックの Java 実装

MS-Windows と ") に精通している開発者。 Java のオブジェクト指向モデルは現在メソッド ポインターをサポートしておらず、この便利なメカニズムを使用できないようです。

Java はインターフェースをサポートしており、同じコールバックをインターフェースを通じて実現できます。重要なのは、単純なインターフェイスを定義し、コールバックするメソッドを宣言することです。

たとえば、特定のイベントが発生したときに通知されると仮定すると、インターフェイスを定義できます:

public interface InterestingEvent {
 // 这只是一个普通的方法,可以接收参数、也可以返回值
 public void interestingEvent();
}
ログイン後にコピー

このようにして、このインターフェイス クラス オブジェクトを実装する任意のハンドル グリップが得られます。

イベントが発生すると、InterestingEvent インターフェースを実装するオブジェクトに通知し、interestingEvent() メソッドを呼び出す必要があります。

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 インターフェースを実装し、独自の参照をイベント通知器に渡す必要があります。

public class CallMe implements InterestingEvent {
 private EventNotifier en;
 
 public CallMe() {
  // 新建一个事件通知者对象,并把自己传递给它
  en = new EventNotifier(this);
 }
 
 // 实现事件发生时,实际处理事件的方法
 public void interestingEvent() {
  // 这个事件发生了,进行处理
 }
}
ログイン後にコピー

上記は、Java でのコールバックの実装を示す非常に簡単な例です。

もちろん、イベント管理クラスまたはイベント通知クラスへの登録を通じて、このイベントに関心のある複数のオブジェクトを登録することもできます。

1. InterestingEvent インターフェイスを定義し、コールバック メソッド ninterestingEvent(String event) は単に String パラメーターを受け取ります。

interface InterestingEvent {
 public void interestingEvent(String event);
}
ログイン後にコピー

2. InterestingEvent インターフェイス、イベント処理クラス

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");
 }
}
ログイン後にコピー

を実装します。

以上ですJava コールバック メカニズムの概要。必要な学生は参照できます。

その他の Java 実装コールバック コード例関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!