Rumah  >  Artikel  >  Java  >  Fungsi Panggilan Balik Java

Fungsi Panggilan Balik Java

WBOY
WBOYasal
2024-08-30 15:33:48419semak imbas

Panggil balik ialah mekanisme apabila rujukan yang dihantar kepada fungsi dipanggil apabila peristiwa tertentu berlaku dalam pengaturcaraan dipacu Acara. Dalam kes bahasa pengaturcaraan seperti C, C++, panggilan balik dicapai dengan menghantar penuding function1 ke function2. Memandangkan Java tidak menyokong penunjuk, panggilan balik tidak boleh dilaksanakan seperti ini. Untuk itu, antara muka dicipta dan diluluskan di mana lokasi fungsi dirujuk. Dalam artikel ini, butiran lanjut tentang fungsi panggil balik akan dibincangkan.

Sintaks:

IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Di bawah ialah sintaks fungsi panggil balik dengan antara muka dengan fungsi panggil balik hadir. Kaedah ini akan digunakan kemudian di dalam kelas.

public interface interfaceA {
public String callA() ;
}

Bagaimana Fungsi Panggilan Balik Java Berfungsi?

Mari kita lihat cara fungsi panggil balik berfungsi dengan cara yang mudah.

  • Buat antara muka Dengan hanya satu kaedah callA().
  • Buat kaedah func1dengan A sebagai parameter kaedah.
  • Panggil callA()di dalam func1.
  • Lepasi tika baharu A dan ganti kaedah callA() untuk memanggil func1.
  • Gunakan notasi anak panah sebagai alternatif kepada berita kata kunci supaya kod kelihatan lebih bersih.

Contoh untuk Melaksanakan Fungsi Panggilan Balik Java

Berikut ialah beberapa contoh program pada fungsi panggil balik java.

Contoh #1

Atur cara Java yang mencetak teks apabila butang diklik.

Kod:

//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");
         }
      });
   } }

Output:

Fungsi Panggilan Balik Java

Penjelasan: Pertama sekali, buat objek untuk butang1, ClickHandler dan butang2. Kemudian lulus objek Pengendali Klik untuk melaksanakan operasi lalai. Selepas itu, untuk melaksanakan operasinya sendiri, lulus antara muka dengan kaedah clickhndlr yang memaparkan output semasa mengklik. Setelah semua ini selesai, buat antara muka clickeventhandlrinterfce untuk kaedah panggil balik. Kemudian, buat pengendali panggil balik ClickHandler yang melaksanakan antara muka clickeventhandlrinterfce dan, akhirnya, cipta kelas untuk penjana acara. Semasa melaksanakan kod, dua baris akan dicetak, seperti yang ditunjukkan di atas dalam output sampel.

Contoh #2

Atur cara java ringkas yang melaksanakan fungsi panggil balik.

Kod:

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

Output:

Fungsi Panggilan Balik Java

Penjelasan: Dalam program ini, antara muka dicipta dengan hanya satu kaedah callA(). Kemudian, kaedah lain, func1, dicipta dengan antara mukaA sebagai parameter kaedah. Selepas itu, panggil antaramukaA.callA() di dalam func1. Setelah langkah-langkah ini selesai, luluskan contoh baru antara mukaA dan ganti kaedah callA() untuk memanggil func1. Di sini notasi anak panah digunakan sebagai alternatif kepada kata kunci baharu supaya kod kelihatan lebih bersih. Semasa melaksanakan kod, dapat dilihat bahawa tiga kaedah dipanggil dan hasilnya dikembalikan, seperti yang ditunjukkan dalam rajah di atas.

Contoh #3

Atur cara Java yang melaksanakan fungsi panggil balik dan mencetak rentetan.

Kod:

//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");
  }
}

Output:

Fungsi Panggilan Balik Java

Penjelasan: Dalam program ini, cipta antara muka dan buat kelas yang melaksanakan antara muka. Di dalam kelas itu, cipta kaedah samplefunc yang mengambil teks sebagai parameter. Menggunakan objek kelas yang dicipta, kaedah dipanggil dan rentetan akan dicetak semasa melaksanakan kod.

Contoh #4

Atur cara Java yang menambah dua nombor berdasarkan kelas.

Kod:

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

Output:

Fungsi Panggilan Balik Java

Penjelasan: Dalam program ini, antara muka dicipta, dan kaedah kelas dipanggil. Di sini, sejumlah dua amaun ditemui menggunakan fungsi panggil balik berdasarkan input pengguna.

Atas ialah kandungan terperinci Fungsi Panggilan Balik Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Rekursi di JawaArtikel seterusnya:Rekursi di Jawa