Java implementa la devolución de llamada
Los desarrolladores que están familiarizados con los patrones de diseño basados en eventos MS-Windows y X Windows generalmente pasan un puntero a la fuente del evento y llaman a este método cuando se produce un evento (también conocido como una "devolución de llamada"). El modelo orientado a objetos de Java actualmente no admite consejos de métodos, y parece que este conveniente mecanismo no se puede utilizar.
Java admite la interfaz, y la misma devolución de llamada se puede implementar a través de la interfaz. El truco es definir una interfaz simple y declarar un método que la devuelve el deseado.
Por ejemplo, supongamos que se notifica un evento cuando ocurre, podemos definir una interfaz:
Interfaz pública InteresdeingEvent {// Este es solo un método ordinario, que puede recibir parámetros o devolver el valor public Public InteresteryEvent ();} De esta manera, tenemos cualquier agarre de mango que implementa este objeto de clase de interfaz.
Cuando se produce un evento, el objeto que implementa la interfaz interesante de eventos debe ser notificada y se debe llamar al método interesante ().
class EventNotifier {private interesante, IE; booleano privado algo modificado; Public EventNotifier (evento interesante de Evento) {IE = Event; SomethingHappened = false; } public void dowork () {
if (somethinghappened) {
// Cuando ocurra un evento, notifique a la interfaz llamando a este método
IE.interestingEvent ();
}
}
}En este ejemplo, se usa algo Happened para marcar si ocurre un evento.
La clase que desea recibir notificaciones de eventos debe implementar la interfaz interesante de eventos y aprobar su propia referencia al Notificador del evento.
La clase pública CallMe implementa interesante Event {Private EventNotifier en; public CallMe () {// Cree un nuevo objeto de notificación de eventos y pasarlo a él en = nuevo EventNotifier (esto); } // Implementar el método para manejar realmente los eventos cuando se produce un evento público void interesante e interesante () {// Este evento ocurre, procesarlo}}Lo anterior es un ejemplo muy simple para ilustrar la implementación de devoluciones de llamada en Java.
Por supuesto, múltiples objetos interesados en este evento también se pueden registrar en la clase de administración de eventos o notificación de eventos.
1. Defina una interfaz interesante Event, y el método de devolución de llamada desconocido (evento de cadena) simplemente recibe un parámetro de cadena.
interfaz interesante event {public void interesanteVent (evento de cadena);}2. Implemente la interfaz de eventos interesantes y la clase de procesamiento de eventos
clase CallMe implementa interesante Elevente {nombre de cadena privada; public CallMe (nombre de cadena) {this.name = name; } public void interesanteVent (evento de cadena) {system.out.println (nombre + ": [" + evento + "] sucedió"); }} 3. Gerente de eventos o notificación de eventos
clase EventNotifier {Lista privada <CallMe> callMes = new ArrayList <CallMe> (); public void regist (callMe callMe) {callmes.add (callMe); } public void dowork () {for (callMe callMe: callmes) {callMe.interestingEvent ("Evento de muestra"); }}}4. Prueba
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"); // REGISTE REN. REGIST (A); ren.regista (b); // prueba ren.dowork (); }}Lo anterior es una introducción al mecanismo de devolución de llamada Java. Los estudiantes necesitados pueden referirse a él.