Maison Java javaDidacticiel Exemple de code de rappel d'implémentation Java

Exemple de code de rappel d'implémentation Java

Jan 24, 2017 pm 01:30 PM

Implémentation JAVA du rappel

Les développeurs familiers avec les modèles de conception basés sur les événements MS-Windows et X Windows transmettent généralement un pointeur vers une méthode vers la source de l'événement et l'appellent lorsqu'un événement se produit . Cette méthode (également appelée « rappel »). Le modèle orienté objet de Java ne prend actuellement pas en charge les pointeurs de méthode et ne semble pas pouvoir utiliser ce mécanisme pratique.

Java prend en charge l'interface, et le même rappel peut être obtenu via l'interface. L'astuce consiste à définir une interface simple et à déclarer une méthode que vous souhaitez rappeler.

Par exemple, en supposant que nous serons avertis lorsqu'un certain événement se produit, nous pouvons définir une interface :

public interface InterestingEvent {
 // 这只是一个普通的方法,可以接收参数、也可以返回值
 public void interestingEvent();
}
Copier après la connexion

De cette façon, nous en avons une qui implémente ceci La poignée de l'objet de classe d'interface.

Lorsqu'un événement se produit, l'objet qui implémente l'interface InterestingEvent doit être notifié et la méthode interestingEvent() doit être appelée.

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>}
Copier après la connexion

Dans cet exemple, SomethingHappened est utilisé pour marquer si l'événement se produit.

Les classes qui souhaitent recevoir des notifications d'événements doivent implémenter l'interface InterestingEvent et transmettre leur propre référence au notificateur d'événement.

public class CallMe implements InterestingEvent {
 private EventNotifier en;
 
 public CallMe() {
  // 新建一个事件通知者对象,并把自己传递给它
  en = new EventNotifier(this);
 }
 
 // 实现事件发生时,实际处理事件的方法
 public void interestingEvent() {
  // 这个事件发生了,进行处理
 }
}
Copier après la connexion

Ce qui précède est un exemple très simple pour illustrer l'implémentation des rappels en Java.

Bien sûr, vous pouvez également enregistrer plusieurs objets intéressés par cet événement en vous inscrivant à la classe de gestion d'événements ou de notification d'événements.

1. Définissez une interface InterestingEvent, et la méthode de rappel ninterestingEvent(String event) reçoit simplement un paramètre String.

interface InterestingEvent {
 public void interestingEvent(String event);
}
Copier après la connexion

2. Implémentez l'interface InterestingEvent, classe de traitement d'événements

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");
 }
}
Copier après la connexion

3. , ou notificateur d'événement

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");
  }
 }
}
Copier après la connexion

4. Testez

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");
 
  // regiest
  ren.regist(a);
  ren.regist(b);
   
  // test
  ren.doWork(); 
 }
}
Copier après la connexion

Le ci-dessus est une introduction au mécanisme de rappel Java. Les étudiants dans le besoin peuvent s'y référer.

Pour plus d'articles sur les exemples de codes de rappel d'implémentation Java, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)