Java mengimplementasikan panggilan balik
Pengembang yang terbiasa dengan pola desain MS-Windows dan X Windows yang didorong oleh acara biasanya melewati pointer ke sumber acara dan memanggil metode ini ketika suatu peristiwa terjadi (juga dikenal sebagai "callback"). Model berorientasi objek Java saat ini tidak mendukung pointer metode, dan tampaknya mekanisme yang nyaman ini tidak dapat digunakan.
Java mendukung antarmuka, dan panggilan balik yang sama dapat diimplementasikan melalui antarmuka. Caranya adalah mendefinisikan antarmuka sederhana dan mendeklarasikan metode yang dipanggil kembali oleh yang diinginkan.
Misalnya, misalkan suatu peristiwa diberitahu ketika itu terjadi, kita dapat mendefinisikan antarmuka:
Antarmuka Publik Menarik {// Ini hanya metode biasa, yang dapat menerima parameter atau mengembalikan nilai public void menarik menarik ();} Dengan cara ini, kami memiliki pegangan pegangan yang mengimplementasikan objek kelas antarmuka ini.
Ketika suatu peristiwa terjadi, objek yang mengimplementasikan antarmuka yang menarik perlu diberitahu dan metode menarik () perlu dipanggil.
class eventNotifier {private menarik IE; Something Boolean Pribadi; public eventNotifier (acara menarik) {ie = event; Somethinghappened = false; } public void dowork () {
if (Somethinghappened) {
// Ketika suatu peristiwa terjadi, beri tahu antarmuka dengan memanggil metode ini
IE.InterestEvent ();
}
}
}Dalam contoh ini, sesuatu yang diterapkan digunakan untuk menandai apakah suatu peristiwa terjadi.
Kelas yang ingin menerima pemberitahuan acara harus mengimplementasikan antarmuka yang menarik dan memberikan referensi sendiri ke pemberitahuan acara.
Public Class CallMe mengimplementasikan menarik {private EventNotifier en; Public callme () {// Buat objek pemberitahuan acara baru dan berikan kepada IT = EventNotifier baru (ini); } // Menerapkan metode penanganan peristiwa yang benar -benar ketika suatu peristiwa terjadi public void menarik () {// peristiwa ini terjadi, prosesnya}}Di atas adalah contoh yang sangat sederhana untuk menggambarkan implementasi panggilan balik di Java.
Tentu saja, banyak objek yang tertarik pada acara ini juga dapat didaftarkan di kelas manajemen acara atau pemberitahuan acara.
1. Tentukan antarmuka yang menarik, dan metode panggilan balik tidak diketahui (peristiwa string) hanya menerima parameter string.
antarmuka menarik {public void menarik (peristiwa string);}2. Menerapkan antarmuka yang menarik dan kelas pemrosesan acara
Class CallMe mengimplementasikan NAMA STRING MAINTINGEVENT {private; callme publik (nama string) {this.name = name; } public void menarik (peristiwa string) {System.out.println (name + ": [" + Event + "] terjadi"); }} 3. Manajer acara, atau pemberitahuan acara
class eventNotifier {daftar pribadi <callme> callMes = new ArrayList <callme> (); public void regist (callme callme) {callmes.add (callme); } public void dowork () {for (callme callme: callMes) {callme.InterestEvent ("Contoh acara"); }}}4. Tes
Public Class CallMetest {public static void main (string [] args) {eventNotifier ren = new EventNotifier (); Callme a = new callme ("callme a"); CallMe B = CallMe baru ("CallMe B"); // Regiest Ren.Regist (A); Ren.Regist (b); // uji ren.dowork (); }}Di atas adalah pengantar mekanisme panggilan balik Java. Siswa yang membutuhkan dapat merujuknya.