Ein Rückruf ist ein Mechanismus, bei dem eine Referenz, die an eine Funktion übergeben wird, aufgerufen wird, wenn ein bestimmtes Ereignis in der ereignisgesteuerten Programmierung auftritt. Bei Programmiersprachen wie C, C++ wird der Rückruf durch Übergabe des Funktions1-Zeigers an Funktion2 erreicht. Da Java keine Zeiger unterstützt, kann der Callback nicht so implementiert werden. Hierzu werden Schnittstellen erstellt und übergeben, in denen auf den Speicherort einer Funktion verwiesen wird. In diesem Artikel werden weitere Details zur Rückruffunktion besprochen.
Syntax:
WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 ProbetestsStarten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Unten finden Sie die Syntax der Callback-Funktion, wenn eine Schnittstelle mit einer Callback-Funktion vorhanden ist. Diese Methode wird später in der Klasse verwendet.
public interface interfaceA { public String callA() ; }
Sehen wir uns an, wie die Rückruffunktion auf einfache Weise funktioniert.
Im Folgenden finden Sie einige Beispielprogramme für Java-Callback-Funktionen.
Java-Programm, das Text druckt, wenn auf die Schaltfläche geklickt wird.
Code:
//Create an interface clickeventhandlrinterfce for the callback method interface clickeventhandlrinterfce { //call method clickhndlr public void clickhndlr(); } //Create a callback handler ClickHandler that implements the clickeventhandlrinterfce interface class ClickHandler implements clickeventhandlrinterfce { //call method clickhndlr public void clickhndlr() { System.out.println("Hey. . . You have Clicked"); } } //Create class for event generator class Button { public void onClick(clickeventhandlrinterfce chndlr) { chndlr.clickhndlr(); } } public class CallBackFuncExample { public static void main(String[] args) { //create an object for btn2 Button btn1 = new Button(); //create an object for ClickHandler ClickHandler chndlr = new ClickHandler(); //pass the object of ClickHandler for performing the default operation btn1.onClick(chndlr); //create an object for button2 Button btn2 = new Button(); //For implementing own operation, pass the interface btn2.onClick(new clickeventhandlrinterfce() { @Override //method clickhndlr that displays output on clicking public void clickhndlr() { System.out.println("Hey. . . You have clicked a button"); } }); } }
Ausgabe:
Erläuterungen: Erstellen Sie zunächst ein Objekt für button1, ClickHandler und button2. Übergeben Sie dann das Objekt des Click-Handlers zum Ausführen der Standardoperation. Anschließend übergeben Sie zur Implementierung einer eigenen Operation die Schnittstelle mit einer Methode clickhndlr, die beim Klicken eine Ausgabe anzeigt. Sobald dies alles erledigt ist, erstellen Sie eine Schnittstelle clickeventhandlrinterfce für die Rückrufmethode. Erstellen Sie dann einen Callback-Handler ClickHandler, der die Schnittstelle clickeventhandlrinterfce implementiert und schließlich eine Klasse für den Ereignisgenerator erstellt. Beim Ausführen des Codes werden zwei Zeilen gedruckt, wie oben in der Beispielausgabe gezeigt.
Einfaches Java-Programm, das die Rückruffunktion implementiert.
Code:
//class starts here public class CallBackFuncExample { //main method public static void main(String args[]) { //Function that passes interface name as parameter func1(new interfaceA() { //method callA public String callA() { return "HI, I AM FIRST CALL "; } } ) ; // function that passes interface name as parameter func1(new interfaceA() { //method callA public String callA() { return "HI, I AM SECOND CALL"; } } ) ; func1(() -> { return "HI, I AM THIRD CALL"; }); } public static void func1(interfaceA intr) { System.out.println("Method called here: " + intr.callA()); } public interface interfaceA { public String callA(); } }
Ausgabe:
Erläuterungen: In diesem Programm wird eine Schnittstelle mit nur einer Methode callA() erstellt. Anschließend wird eine weitere Methode, func1, mit interfaceA als Methodenparameter erstellt. Rufen Sie danach interfaceA.callA() in func1 auf. Sobald diese Schritte abgeschlossen sind, übergeben Sie eine neue Instanz von interfaceA und überschreiben Sie die Methode callA() zum Aufrufen von func1. Hier wird alternativ zum Schlüsselwort new eine Pfeilnotation verwendet, damit der Code übersichtlicher aussieht. Beim Ausführen des Codes ist ersichtlich, dass drei Methoden aufgerufen werden und die Ergebnisse zurückgegeben werden, wie in der Abbildung oben dargestellt.
Java-Programm, das eine Rückruffunktion implementiert und eine Zeichenfolge ausgibt.
Code:
//create an interface interface textprint { void samplefunc(String txt); } //create a class that implements the interface class classA implements textprint { //create a method samplefunc that takes a text as a parameter public void samplefunc(String txt) { System.out.println("The text is : " + txt); } } //main class public class CallBackFuncExample { // Reference to the textprint Interface textprint txtrcvr; CallBackFuncExample(textprint r) { txtrcvr = r ; } public void samplefunc2(String s) { txtrcvr.samplefunc(s); } //main method public static void main(String[] args) { // Create a object of the classA that implements the interface classA objA = new classA(); CallBackFuncExample obj2 = new CallBackFuncExample(objA); obj2.samplefunc2("Program runs successfully"); } }
Ausgabe:
Erläuterungen: Erstellen Sie in diesem Programm eine Schnittstelle und eine Klasse, die die Schnittstelle implementiert. Erstellen Sie innerhalb dieser Klasse eine Methode „samplefunc“, die einen Text als Parameter akzeptiert. Mithilfe des erstellten Klassenobjekts wird die Methode aufgerufen und die Zeichenfolge wird beim Ausführen des Codes ausgegeben.
Java-Programm, das zwei Zahlen basierend auf der Klasse hinzufügt.
Code:
import java.util.Scanner; //create an interface interface interfaceA { double func1(); } // class A that implements the interface class A implements interfaceA { public double func1() { return 2500.0; } } //class B that implements the interface class B implements interfaceA { public double func1() { return 1500.0; } } class CallBackFuncExample { //MAIN METHOD public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { //scanner object Scanner sc = new Scanner(System.in); System.out.println("Enter the class name"); String classnm = sc.next(); // object is then stored in cl Class cl = Class.forName(classnm); interfaceA intr = (interfaceA)cl.newInstance(); func2(intr); } static void func2(interfaceA intrfce) { double a = 2000.0; double b = intrfce.func1(); double sum = b + a; System.out.println("Total amount is :" + sum); } }
Ausgabe:
Erläuterungen: In diesem Programm wird die Schnittstelle erstellt und die Klassenmethoden aufgerufen. Hier wird mithilfe der Callback-Funktion basierend auf der Benutzereingabe eine Summe zweier Beträge ermittelt.
Das obige ist der detaillierte Inhalt vonJava-Callback-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!