A callback egy olyan függvény, ami paraméterként egy másik függvényt vár.
Egy műveletet, egy függvényt egy másik függvénynek szeretnénk átadni végrehajtásra.
Általában eseménykezelésre, aszinkron műveletekre használjuk.
Az alábbi példában, a hívás helyén névtelen függvényt adunk át a valami() függvény számára.
Készíthetünk saját interfészt is a megvalósításhoz:
Egy Messanger nevű komponenst készítünk, amihez eseményt lehet rendelni. Az esemény itt szimulált. Nem egy egér kattintás, vagy egy szerver válasza, csak egy Thread.sleep() hívás.
interface ActionListener { void onMessage(String message); } class Messanger { void addActionListener(ActionListener listener) { // Az aszinkron folyamat szimulációja new Thread(() -> { try { Thread.sleep(3000); // Szimulált várakozás 3 másodpercig } catch (InterruptedException e) { e.printStackTrace(); } // Majd hívjuk meg a callback függvényt a háttérszálon listener.onMessage("Üzenet érkezett"); }).start(); } } public class Main { public static void main(String[] args) { Messanger messanger = new Messanger(); // messanger.addActionListener(new ActionListener() { // public void onMessage(String msg) { // System.out.println(msg); // } // }); messanger.addActionListener(msg -> { System.out.println(msg); }); System.out.println("Program 10 másodpercig fut..."); // Várakozzunk, hogy lássuk az aszinkron működést try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } }