Maison >Java >javaDidacticiel >Fonction de rappel Java

Fonction de rappel Java

WBOY
WBOYoriginal
2024-08-30 15:33:48468parcourir

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és

Commencez 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() ;
}

Comment fonctionne la fonction de rappel Java ?

Voyons comment fonctionne la fonction de rappel de manière simple.

  • Créez une interface avec une seule méthode callA().
  • Créez une méthode func1 avec A comme paramètre de méthode.
  • Appelez callA() dans func1.
  • Passez une nouvelle instance de A et remplacez la méthode callA() pour appeler la func1.
  • Utilisez la notation fléchée comme alternative au mot-clé news afin que le code paraisse plus propre.

Exemples d'implémentation de la fonction de rappel Java

Voici quelques exemples de programmes sur les fonctions de rappel Java.

Exemple n°1

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 :

Fonction de rappel Java

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.

Exemple n°2

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 :

Fonction de rappel Java

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.

Exemple #3

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 :

Fonction de rappel Java

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.

Exemple n°4

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 :

Fonction de rappel Java

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Récursivité en JavaArticle suivant:Récursivité en Java