Java реализует обратный вызов
Разработчики, которые знакомы с MS-Windows и X Windows, управляемыми событиями, обычно передают указатель источнику события и вызывают этот метод, когда происходит событие (также известное как «обратный вызов»). В настоящее время ориентированная на Java модель не поддерживает указатели метода, и кажется, что этот удобный механизм не может быть использован.
Java поддерживает интерфейс, и тот же обратный вызов может быть реализован через интерфейс. Хитрость заключается в том, чтобы определить простой интерфейс и объявить метод, который вызывает обратно желаемым.
Например, предположим, что событие уведомляется, когда оно происходит, мы можем определить интерфейс:
Общественный интерфейс ensuctyevent {// Это просто обычный метод, который может получать параметры или вернуть значение public void enownereevent ();} Таким образом, у нас есть какая -либо рукоятка, которая реализует этот объект класса интерфейса.
Когда происходит событие, объект, который реализует интересный интерфейс, должен быть уведомлен, и необходимо вызвать метод интересного evenevent ().
Класс EventNotifier {private InterenceEvent IE; Частный логический что -то Public EventNotifier (интересное событие) {IE = Event; что -то склонилось = false; } public void dowork () {
if (что -то поглощено) {
// Когда происходит событие, уведомить интерфейс, вызывая этот метод
т.е. InterestingEvent ();
}
}
}В этом примере что -то, что используется, чтобы отметить, происходит ли событие.
Класс, который желает получить уведомления о событиях, должен реализовать интерфейс интересного эв.
открытый класс Callme реализует интересный {private EventNotifier en; public callme () {// Создать новый объект уведомления о событии и передать его en = new EventNotifier (this); } // Реализовать метод фактической обработки событий, когда событие происходит public void enchensyevent () {// Это событие происходит, обрабатывать его}}}}}Выше приведено очень простой пример, чтобы проиллюстрировать реализацию обратных вызовов в Java.
Конечно, несколько объектов, заинтересованных в этом событии, также могут быть зарегистрированы в классе управления событиями или уведомлением о событиях.
1. Определите интерфейс InterenceEvent, и метод обратного вызова Unknownevent (String Event) просто получает параметр строки.
Интерфейс интересен
2. Реализация интересного интерфейса и класса обработки событий
Class Callme реализует интересные {частное имя строки; public callme (string name) {this.name = name; } public void enchensyEvent (string event) {System.out.println (name + ": [" + event + "] произошло"); }} 3. Менеджер событий или уведомление о событии
класс 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 ("Пример события"); }}}4. Тест
открытый класс CallMetest {public static void main (string [] args) {eventNotifier ren = new EventNotifier (); Callme a = new Callme ("callme a"); Callme b = new Callme ("callme b"); // regest ren.regist (a); Ren.regist (b); // тест ren.dowork (); }}Выше приведено введение в механизм обратного вызова Java. Нуждающиеся студенты могут ссылаться на это.