Maison >Java >javaDidacticiel >Fonction de rappel Java
Un rappel est un mécanisme par lequel une référence transmise à une fonction est appelée lorsqu'un événement particulier se produit dans la programmation pilotée par événements. Dans le cas de langages de programmation tels que C, C++, le rappel est obtenu en passant le pointeur function1 vers function2. Comme Java ne prend pas en charge les pointeurs, le rappel ne peut pas être implémenté de cette manière. Pour cela, des interfaces sont créées et transmises là où l'emplacement d'une fonction est référencé. Dans cet article, plus de détails sur la fonction de rappel seront discutés.
Syntaxe :
PUBLICITÉ Cours populaire dans cette catégorie MAÎTRISÉE JAVA - Spécialisation | 78 séries de cours | 15 tests simulésCommencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Vous trouverez ci-dessous la syntaxe de la fonction de rappel où une interface avec une fonction de rappel est présente. Cette méthode sera utilisée plus tard dans la classe.
public interface interfaceA { public String callA() ; }
Voyons comment fonctionne la fonction de rappel de manière simple.
Voici quelques exemples de programmes sur les fonctions de rappel Java.
Programme Java qui imprime le texte lorsque l'on clique sur le bouton.
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"); } }); } }
Sortie :
Explications : Tout d'abord, créez un objet pour Button1, ClickHandler et Button2. Transmettez ensuite l’objet de Click Handler pour effectuer l’opération par défaut. Après cela, pour implémenter sa propre opération, passez l'interface avec une méthode clickhndlr qui affiche la sortie en cliquant. Une fois tout cela fait, créez une interface clickeventhandlrinterfce pour la méthode de rappel. Ensuite, créez un gestionnaire de rappel ClickHandler qui implémente l'interface clickeventhandlrinterfce et, enfin, crée une classe pour le générateur d'événements. Lors de l'exécution du code, deux lignes seront imprimées, comme indiqué ci-dessus dans l'exemple de sortie.
Programme Java simple qui implémente la fonction de rappel.
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(); } }
Sortie :
Explications : Dans ce programme, une interface est créée avec une seule méthode callA(). Ensuite, une autre méthode, func1, est créée avec interfaceA comme paramètre de méthode. Après cela, appelez interfaceA.callA() dans func1. Une fois ces étapes terminées, transmettez une nouvelle instance de interfaceA et remplacez la méthode callA() pour appeler la func1. Ici, une notation fléchée est utilisée comme alternative au mot-clé new afin que le code paraisse plus propre. Lors de l'exécution du code, on peut voir que trois méthodes sont appelées et que les résultats sont renvoyés, comme le montre la figure ci-dessus.
Programme Java qui implémente la fonction de rappel et imprime une chaîne.
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"); } }
Sortie :
Explications : Dans ce programme, créez une interface et créez une classe qui implémente l'interface. Dans cette classe, créez une méthode samplefunc qui prend un texte comme paramètre. À l'aide de l'objet de classe créé, la méthode est appelée et la chaîne est imprimée lors de l'exécution du code.
Programme Java qui ajoute deux nombres en fonction de la classe.
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); } }
Sortie :
Explications : Dans ce programme, l'interface est créée, et les méthodes de classe sont appelées. Ici, une somme de deux montants est trouvée à l'aide de la fonction de rappel basée sur la saisie de l'utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!