Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Callback в Java

Алексей Пахомов Ученик (11), на голосовании 1 год назад
Прошу объяснить, простыми словами, что такое обратные вызовы. Как они работают и для чего нужны. Я искал информацию в других источниках, но не особо понял что это и для чего нужно. Плюс, в некоторых источниках, в примерах кода, создавалась переменная интерфейса (InterfaceName name). Это меня окончательно запутало. Зачем их создавать и как их вообще возможно создать? Интерфейс - это же нереализованные методы (кроме default) и, возможно, константы. И я не могу понять, как возможно создать такую переменную и что вообще она хранит. В общем в этой теме я сильно запутался и буду очень благодарен тем, кто сможет мне ее объяснить. Заранее всех благодарю.
Голосование за лучший ответ
Терр Онтал Мудрец (12751) 1 год назад
Это функция, которая вызывается в конце другой функции
Алексей ПахомовУченик (11) 1 год назад
Ну это я понял еще из названия. Меня интересуют подробности
Терр Онтал Мудрец (12751) Алексей Пахомов, какие ещё подробности тебе нужны? Что в этом непонятного?
Алексей ПахомовУченик (11) 1 год назад
Прошу объяснить, простыми словами, что такое обратные вызовы. Как они работают и для чего нужны. Я искал информацию в других источниках, но не особо понял что это и для чего нужно. Плюс, в некоторых источниках, в примерах кода, создавалась переменная интерфейса (InterfaceName name). Это меня окончательно запутало. Зачем их создавать и как их вообще возможно создать? Интерфейс - это же нереализованные методы (кроме default) и, возможно, константы. И я не могу понять, как возможно создать такую переменную и что вообще она хранит. В общем в этой теме я сильно запутался и буду очень благодарен тем, кто сможет мне ее объяснить. Заранее всех благодарю.
Алексей Пахомов, callback это что вызывается "в ответ" (call back) на завершение другого куска кода. По сути это один из паттернов асинхронного программирования когда по завершении потока что-то должно быть сделано.
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264043) 1 год назад
Пример простого обратного вызова:

 def greeting(name): 
print("Hello " + name)

def process_user_input(callback):
name = input("Please enter your name: ")
callback(name)

process_user_input(greeting)
Retronik33 Профи (829) 1 год назад
Есть одно применение для них, как по мне.

Простыми словами: они нужны, чтобы хранить несколько обьектов разных типов в массивах.

Например:
 public class Main {
private static Printer[] example;

public static void main(String[] args) {
example = new Printer[] {
new ThisPrint(),
new IsPrint(),
new APrint(),
new ExamplePrint()
};

example[0].print();
example[1].print();
example[2].print();
example[3].print();
}
}

interface Printer {
public void print();
}

class ThisPrint implements Printer {
@Override
public void print() {
System.out.print("This ");
}
}

class IsPrint implements Printer {
@Override
public void print() {
System.out.print("is ");
}
}

class APrint implements Printer {
@Override
public void print() {
System.out.print("a ");
}
}

class ExamplePrint implements Printer {
@Override
public void print() {
System.out.println("example!");
}
}
Других применений я не вижу.
Похожие вопросы