Как создать пользовательские Listeners в java?

Я хочу знать, как установить наши собственные Listeners в java. Например, у меня есть функция, которая увеличивает число от 1 до 100. Я хочу установить слушатель, когда значение достигнет 50. Как я могу это сделать? Pls предлагает мне любой учебник.

Ответ 1

Посмотрите на источник любого класса, который использует прослушиватели. На самом деле это довольно просто:

  • создать интерфейс для вашего слушателя, например. MyListener
  • сохранить список MyListener
  • при каждом событии, которое слушатели должны прослушивать, перебирать по списку и вызывать соответствующий метод с некоторыми параметрами (-ами) событий

Что касается шаблона наблюдателя вместе с некоторым кодом Java, посмотрите wikipedia.

Ответ 2

fooobar.com/questions/38652/...

Вероятно, вы захотите изучить шаблон наблюдения .

Вот пример кода для начала работы:

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..."
    }
}

Ответ 3

Нет встроенного механизма, позволяющего подключать слушателей ко всем переменным. Объект, который вы хотите посмотреть, должен обеспечить поддержку этого сам по себе. Например, он может стать Observable и отключить событияChange для своих наблюдателей (которые вы также должны отслеживать).

Ответ 4

Я бы рекомендовал использовать EventBus для вашего варианта использования. Он имеет приятный дизайн API и прост в использовании. Просмотрите раздел Начало работы, чтобы узнать, как он работает.