Как понять callback java
Всё что нашёл, первых 5 страниц выдачи, половина из них javascript, код которого я не понимаю, а половина муть какая-то, когда с первых предложений начинают лезть в какие-то дебри, например "Берём win srpt Api и в нём функция GGDT через SMLP.." И всё в таким же духе. И вообще, при чём тут интерфейс?
На занятиях тоже отвратительно объяснили
Зачастую, это используется при создании так называемых колбэков - объектов, которые определяются в классе А и передаются в качестве аргумента в класс Б
Помогите, дайте простой пример, если можно с кодом
Например: Есть 2 человека, Петя и Маша, и если Петя ударил Машу (произошло событие) - нужно Петю наказать.
Ответы (1 шт):
Колбэки делаются через интерфейсы.
В примере ниже, когда 1 человек бьет другого, у нас еще есть колбэк, из которого мы можем посмотреть "а какой урон был у жертвы нападения?"
а так же сам колбэк возвращает нам в место его вызова какую-то строку, которую мы можем использовать в коде в дальнейшем.
public class Human {
public String name;
public int damage;
public Human(String name, int damage) {
this.name = name;
this.damage = damage;
}
public void fight(Human otherHuman, FightCallback callback) {
LogUtilsKt.logInfo(name + " наносит " + damage + " урона по " + otherHuman.name);
String str = callback.fight(otherHuman.damage);
LogUtilsKt.logInfo(str);
}
}
public interface FightCallback {
String fight(int otherHumanDmg);
}
public class main {
public main() {
}
public static void main() {
Human a = new Human("Petya", 42);
Human b = new Human("Mashа", 12);
a.fight(b, new FightCallback() {
@Override
public String fight(int otherHumanDmg) {
LogUtilsKt.logInfo("" + otherHumanDmg);
return "Wlad";
}
});
}
}