web-dev-qa-db-fra.com

Comment créer des écouteurs personnalisés en Java?

Je veux savoir comment configurer nos propres écouteurs en Java. Par exemple, j'ai une fonction qui incrémente le nombre de 1 à 100. Je veux définir un écouteur lorsque la valeur atteint 50. Comment puis-je faire cela? Veuillez me suggérer un tutoriel.

26
vnshetty

Jetez un œil à la source de toute classe qui utilise des écouteurs. En fait, c'est assez simple:

  • créer une interface pour votre auditeur, par ex. MyListener
  • maintenir une liste de MyListener
  • à chaque événement que les écouteurs doivent écouter, parcourez la liste et appelez la méthode appropriée avec un ou plusieurs paramètres d'événement

En ce qui concerne le modèle d'observateur avec un certain Java jetez un œil à wikipedia .

24
Thomas

https://stackoverflow.com/a/6270150/3675925

Vous voudrez probablement examiner le modèle d'observateur .

Voici quelques exemples de code pour vous aider à démarrer:

import Java.util.*;

// An interface to be implemented by everyone interested in "Hello" events
interface HelloListener {
    void someoneSaidHello();
}

// Someone who says "Hello"
class Initiater {
    private List<HelloListener> listeners = new ArrayList<HelloListener>();

    public void addListener(HelloListener toAdd) {
        listeners.add(toAdd);
    }

    public void sayHello() {
        System.out.println("Hello!!");

        // Notify everybody that may be interested.
        for (HelloListener hl : listeners)
            hl.someoneSaidHello();
    }
}

// Someone interested in "Hello" events
class Responder implements HelloListener {
    @Override
    public void someoneSaidHello() {
        System.out.println("Hello there...");
    }
}

class Test {
    public static void main(String[] args) {
        Initiater initiater = new Initiater();
        Responder responder = new Responder();

        initiater.addListener(responder);

        initiater.sayHello();  // Prints "Hello!!!" and "Hello there..."
    }
}
18
do01

Je recommanderais d'utiliser EventBus pour votre cas d'utilisation. Il a une conception Nice API et est facile à utiliser. Jetez un œil à leur section Mise en route pour voir comment cela fonctionne.

0
crusam

Il n'y a pas de mécanisme intégré qui vous permettrait d'attacher des écouteurs à toutes les variables. L'objet que vous souhaitez regarder doit en fournir lui-même le support. Par exemple, il pourrait devenir observable et déclencher des événements onChange vers ses observateurs (dont vous devez également vous assurer qu'ils sont suivis).

0
Thilo