Javaはコールバックを実装します
MS-WindowsおよびX Windowsイベント駆動型のデザインパターンに精通している開発者は、通常、イベントソースへのポインターを渡し、イベントが発生したときにこの方法を呼び出します(「コールバック」とも呼ばれます)。 Javaのオブジェクト指向モデルは現在、メソッドポインターをサポートしておらず、この便利なメカニズムを使用できないようです。
Javaはインターフェイスをサポートし、同じコールバックをインターフェイスを介して実装できます。トリックは、シンプルなインターフェイスを定義し、目的のインターフェースによって呼び戻されるメソッドを宣言することです。
たとえば、イベントが発生したときに通知されると、インターフェイスを定義できるとします。
public interface tenfectionevent {//これは単なる通常の方法であり、パラメーターを受信したり、public void tonfentionevent();}を返すことができます。このようにして、このインターフェイスクラスオブジェクトを実装するハンドルグリップがあります。
イベントが発生した場合、興味深いエベントインターフェイスを実装するオブジェクトに通知する必要があり、absilevent()メソッドを呼び出す必要があります。
class eventNotifier {private fentuntyvent ie; private booleanが何かをしました。 public EventNotifier(興味深いEventイベント){ie = event;何かhappened = false; } public void dowork(){
if(somethinghappened){
//イベントが発生したら、このメソッドを呼び出してインターフェイスに通知します
ie.interestingevent();
}
}
}この例では、イベントが発生するかどうかをマークするために何かが使用されます。
イベント通知を受信したいクラスは、興味深いEverentインターフェイスを実装し、イベント通知者への独自の参照を渡す必要があります。
Public Class CallmeはAncretEventを実装しています{private eventnotifier en; public callme(){//新しいイベント通知オブジェクトを作成し、それをen = new EventNotifier(this)に渡します。 } //イベントが発生したときに実際にイベントを処理する方法を実装しますpublic void tonfentionevent(){//このイベントが発生します、処理}}}上記は、Javaでのコールバックの実装を説明する非常に簡単な例です。
もちろん、このイベントに関心のある複数のオブジェクトは、イベント管理またはイベント通知クラスに登録することもできます。
1.インターフェイスのTonfictionEventを定義すると、Callback Method nownownevent(string event)が文字列パラメーターを受信するだけです。
インターフェイス興味深いevent {public void tenfectionevent(string event);}2。興味深いエベントインターフェイスとイベント処理クラスを実装します
クラスCallmeは興味深いevent {private string name; public callme(string name){this.name = name; } public void abstentableEvent(string event){system.out.println(name + ":[" + event + "] dast"); }} 3。イベントマネージャー、またはイベント通知
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。テスト
public 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); // ren.dowork()をテストします。 }}上記は、Javaコールバックメカニズムの紹介です。困っている学生はそれを参照できます。