Java ใช้การโทรกลับ
นักพัฒนาที่คุ้นเคยกับรูปแบบการออกแบบที่ขับเคลื่อนด้วยเหตุการณ์ MS-Windows และ X Windows มักจะผ่านตัวชี้ไปยังแหล่งเหตุการณ์และเรียกวิธีนี้เมื่อมีเหตุการณ์เกิดขึ้น (หรือที่เรียกว่า "การโทรกลับ") ปัจจุบันโมเดลเชิงวัตถุของ Java ไม่รองรับพอยน์เตอร์วิธีการและดูเหมือนว่ากลไกที่สะดวกนี้ไม่สามารถใช้งานได้
Java รองรับอินเทอร์เฟซและการโทรกลับเดียวกันสามารถใช้งานได้ผ่านอินเตอร์เฟส เคล็ดลับคือการกำหนดอินเทอร์เฟซอย่างง่ายและประกาศวิธีการที่เรียกโดยคนที่ต้องการ
ตัวอย่างเช่นสมมติว่าเหตุการณ์จะได้รับแจ้งเมื่อเกิดขึ้นเราสามารถกำหนดอินเทอร์เฟซ:
อินเทอร์เฟซสาธารณะที่น่าสนใจ {// นี่เป็นเพียงวิธีธรรมดาซึ่งสามารถรับพารามิเตอร์หรือส่งคืนค่าโมฆะสาธารณะที่น่าสนใจ ();}; ด้วยวิธีนี้เรามีด้ามจับที่ใช้วัตถุอินเตอร์เฟสนี้
เมื่อเหตุการณ์เกิดขึ้นวัตถุที่ใช้อินเทอร์เฟซที่น่าสนใจจะต้องได้รับการแจ้งเตือนและต้องมีการเรียกวิธีการที่น่าสนใจ ()
Class EventNotifier {Private Promaterevent เช่น; บูลีนส่วนตัวบางสิ่งบางอย่าง Public EventNotifier (เหตุการณ์ที่น่าสนใจ) {IE = เหตุการณ์; something ahappened = false; } โมฆะสาธารณะ Dowork () {
ถ้า (something happened) {
// เมื่อเหตุการณ์เกิดขึ้นแจ้งอินเทอร์เฟซโดยเรียกใช้วิธีนี้
เช่น IntereStingEvent ();
-
-
-ในตัวอย่างนี้มีการใช้สิ่งที่มีการใช้เพื่อทำเครื่องหมายว่าเหตุการณ์เกิดขึ้นหรือไม่
คลาสที่ต้องการรับการแจ้งเตือนเหตุการณ์จะต้องใช้อินเตอร์เฟสที่น่าสนใจและส่งผ่านการอ้างอิงของตัวเองไปยังผู้แจ้งเตือนเหตุการณ์
คลาสสาธารณะ Callme ใช้งานที่น่าสนใจ {ส่วนตัว eventnotifier en; Public CallMe () {// สร้างวัตถุการแจ้งเตือนเหตุการณ์ใหม่และส่งผ่านไปยังมัน en = new EventNotifier (นี่); } // ใช้วิธีการจัดการเหตุการณ์จริงเมื่อเหตุการณ์เกิดขึ้นกับโมฆะสาธารณะที่น่าสนใจ () {// เหตุการณ์นี้เกิดขึ้นประมวลผล}}}ข้างต้นเป็นตัวอย่างที่ง่ายมากในการแสดงให้เห็นถึงการใช้การโทรกลับใน Java
แน่นอนว่าวัตถุหลายชิ้นที่สนใจในเหตุการณ์นี้สามารถลงทะเบียนในการจัดการเหตุการณ์หรือคลาสการแจ้งเตือนเหตุการณ์
1. กำหนดอินเทอร์เฟซที่น่าสนใจและวิธีการโทรกลับไม่ทราบ (เหตุการณ์สตริง) เพียงแค่ได้รับพารามิเตอร์สตริง
อินเตอร์เฟสที่น่าสนใจ {โมฆะสาธารณะที่น่าสนใจ (เหตุการณ์สตริง);}2. ใช้อินเทอร์เฟซที่น่าสนใจและคลาสการประมวลผลเหตุการณ์
คลาส Callme ใช้งานที่น่าสนใจ {ชื่อสตริงส่วนตัว; Public CallMe (ชื่อสตริง) {this.name = name; } โมฆะสาธารณะที่น่าสนใจ (เหตุการณ์สตริง) {system.out.println (ชื่อ + ": [" + เหตุการณ์ + "] เกิดขึ้น"); - 3. ผู้จัดการเหตุการณ์หรือการแจ้งเตือนเหตุการณ์
คลาส EventNotifier {รายการส่วนตัว <CallMe> callmes = new ArrayList <CallMe> (); Public Void Regist (callme callme) {callmes.add (callme); } โมฆะสาธารณะ Dowork () {สำหรับ (callme callme: callmes) {callme.interestingEvent ("ตัวอย่างตัวอย่าง"); -4. ทดสอบ
คลาสสาธารณะ callmetest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {eventnotifier ren = new eventnotifier (); callme a = new callme ("callme a"); callme b = ใหม่ callme ("callme b"); // Regiest Ren.regist (A); Ren.regist (B); // ทดสอบ ren.dowork (); -ข้างต้นเป็นการแนะนำกลไกการโทรกลับ Java นักเรียนที่ต้องการความต้องการสามารถอ้างถึงได้