Java implementiert einen Rückruf
Entwickler, die mit MS-Windows und X Windows ereignisgesteuerte Entwurfsmuster vertraut sind, übergeben normalerweise einen Zeiger auf die Ereignisquelle und nennen diese Methode, wenn ein Ereignis auftritt (auch als "Rückruf" bezeichnet). Das objektorientierte Modell von Java unterstützt derzeit keine Methodenzeiger, und es scheint, dass dieser bequeme Mechanismus nicht verwendet werden kann.
Java unterstützt die Schnittstelle, und der gleiche Rückruf kann über die Schnittstelle implementiert werden. Der Trick besteht darin, eine einfache Schnittstelle zu definieren und eine Methode zu deklarieren, die von der gewünschten zurückgerufen wird.
Nehmen wir beispielsweise an, dass ein Ereignis benachrichtigt wird, wenn es auftritt, wir können eine Schnittstelle definieren:
öffentliche Schnittstelle interessanter Event {// Dies ist nur eine gewöhnliche Methode, die Parameter empfangen oder den Wert public void interessant ();} zurückgeben kann;} Auf diese Weise haben wir einen Griff, der dieses Schnittstellenklassenobjekt implementiert.
Wenn ein Ereignis auftritt, muss das Objekt, das die interessante Schnittstelle implementiert, benachrichtigt und die interessante () -Methode aufgerufen werden.
Klasse EventNotifier {private interessantes Event dh; privat boolean etwas happed; public eventNotifier (interessantes Event) {IE = Ereignis; etwas, das = falsch ist; } public void dowork () {
if (etwas happed) {
// Wenn ein Ereignis auftritt, benachrichtigen Sie die Schnittstelle, indem Sie diese Methode aufrufen
IE.InterestingEvent ();
}
}
}In diesem Beispiel wird etwas HAPPED verwendet, um zu markieren, ob ein Ereignis auftritt.
Die Klasse, die Ereignisbenachrichtigungen erhalten möchte, muss die interessante Schnittstelle implementieren und ihren eigenen Hinweis auf den Ereignisbenachrichtigungser übergeben.
öffentliche Klasse CallMe implementiert interessant {private EventNotifier en; public Callme () {// Erstellen Sie ein neues Ereignisbenachrichtigungsobjekt und geben Sie es an es weiter. } // Implementieren Sie die Methode zur tatsächlichen Handhabung von Ereignissen, wenn ein Ereignis öffentlicher void interessant () {// Dieses Ereignis erfolgt, verarbeiten Sie es}}}}}}}}}}}}}}}}}}Das obige ist ein sehr einfaches Beispiel, um die Implementierung von Rückrufen in Java zu veranschaulichen.
Natürlich können mehrere an dieser Veranstaltung interessierte Objekte auch in der Veranstaltungsverwaltung oder in der Ereignisbenachrichtigungsklasse registriert werden.
1. Definieren Sie eine Schnittstelle interessant, und die Rückrufmethode unbekannt (String -Ereignis) empfängt einfach einen String -Parameter.
Schnittstelle interessant {public void interessant (String Event);}2. Implementieren Sie die interessante Schnittstellen- und Ereignisverarbeitungsklasse
Klasse Callme implementiert interessante Event {private Zeichenfolge Name; public Callme (String -Name) {this.name = name; } public void interessant (String Ereignis) {System.out.println (Name + ": [" + Ereignis + "] passiert"); }} 3. Event Manager oder Event -Benachrichtigung
Klasse EventNotifier {private Liste <Callme> callmes = new ArrayList <Callme> (); public void Regist (Callme Callme) {callmes.add (Callme); } public void dowork () {für (callme callme: callmes) {callme.interestingEvent ("Beispielereignis"); }}}4. Test
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"); // regnerisch ren.regist (a); Ren.regist (b); // test ren.dowork (); }}Das obige ist eine Einführung in den Java -Callback -Mechanismus. Bedürftige Schüler können sich darauf beziehen.