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-olokMulakan 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() ; }
Mari kita lihat cara fungsi panggil balik berfungsi dengan cara yang mudah.
Berikut ialah beberapa contoh program pada fungsi panggil balik java.
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:
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.
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:
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.
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:
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.
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:
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!