Приветствую Вас ГостьВторник, 14.05.2024, 02:33

Каталог статей


Callback - асинхронная обработка результата

Callback - асинхронная обработка результата выполнения какого-либо кода. Например показали диалоговое окно и надо, обработать результат выбора пользователя. Так как пользователь может думать очень долго, то обработку результата выбора надо запустить только после того, как пользователь сделал выбор. 

В Java функция обратного вызова (Callback) реализовывается через интерфейсы:

package callback;

import javax.swing.*;

public class SomeClass {

    String replyTo;

    interface Callback{ // объявили  интерфейс внутри класса
        void callingBack(String s); // метод интерфейса
    }

    private Callback callback;

    public void registerCallBack(Callback callback){
        this.callback = callback;
    }

    void doSomething(){
       int reply = JOptionPane.showConfirmDialog(null, "Вы программист?", "Опрос", JOptionPane.YES_NO_OPTION);

        if (reply == JOptionPane.NO_OPTION){
            replyTo = "Нет";
        }
        if (reply == JOptionPane.YES_OPTION){
            replyTo = "Да";
        }

        callback.callingBack(replyTo); //вызов метода интерфейса
    }
}

Создаем класс, реализующий callback:

package callback;

public class MyClass implements SomeClass.Callback {
    @Override
    public void callingBack(String s) {

        if (s != null) {
            System.out.println("Ваш ответ: " + s);
        } else {
            System.out.println("Вы не ответили на вопрос!");
        }
    }
}

Теперь реализуем использование нашего класса:

package callback;

public class Main {

    public static void main(String[] args) {

        SomeClass someClass = new SomeClass();
        MyClass myClass = new MyClass();

        someClass.registerCallBack(myClass); // зарегистрировали myClass в качестве коллбэка
        someClass.doSomething(); // запустили отображение вопроса. После того как будет сделан выбор, в консоли будет выведен результат выбора.
    }
}

 

Категория: Java | Добавил: robolen (23.10.2022)
Просмотров: 109 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
Программирование [7]
Java [9]
Описание языка Java
API [0]
Примеры реализации задач [0]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0