ฉันใช้งานการสนับสนุนการโทรกลับ / ผู้รับมอบสิทธิ์ใน Java โดยใช้การสะท้อนกลับ รายละเอียดและแหล่งที่มาทำงานอยู่ที่มีอยู่บนเว็บไซต์ของฉัน
มันทำงานอย่างไร
เรามีคลาสหลักการชื่อ Callback พร้อมคลาสซ้อนชื่อ WithParms API ที่ต้องการการเรียกกลับจะใช้วัตถุโทรกลับเป็นพารามิเตอร์และถ้าจำเป็นให้สร้าง Callback.WithParms เป็นตัวแปรวิธี เนื่องจากแอพพลิเคชั่นมากมายของวัตถุนี้จะถูกเรียกซ้ำการทำงานนี้อย่างหมดจด
ด้วยประสิทธิภาพยังคงมีความสำคัญสูงสำหรับฉันฉันไม่ต้องการให้สร้างอาร์เรย์วัตถุแบบโยนทิ้งเพื่อเก็บพารามิเตอร์สำหรับการเรียกใช้ทุกครั้ง - หลังจากทั้งหมดในโครงสร้างข้อมูลขนาดใหญ่อาจมีองค์ประกอบหลายพันรายการและในการประมวลผลข้อความ สถานการณ์สมมติเราสามารถจบการประมวลผลโครงสร้างข้อมูลนับพันได้ในหนึ่งวินาที
เพื่อให้เป็น threadsafe พารามิเตอร์อาร์เรย์จำเป็นต้องมีอยู่อย่างไม่ซ้ำกันสำหรับการเรียกใช้เมธอด API แต่ละครั้งและเพื่อประสิทธิภาพการทำงานควรใช้อันเดียวกันนี้สำหรับการเรียกกลับทุกครั้ง ฉันต้องการวัตถุที่สองซึ่งจะมีราคาถูกในการสร้างเพื่อผูกโทรกลับด้วยอาร์เรย์พารามิเตอร์สำหรับการเรียก แต่ในบางสถานการณ์ผู้เรียกจะมีอาเรย์พารามิเตอร์ด้วยเหตุผลอื่นอยู่แล้ว ด้วยเหตุผลสองประการนี้พารามิเตอร์อาร์เรย์ไม่ได้อยู่ในวัตถุโทรกลับ นอกจากนี้ตัวเลือกของการเรียกใช้ (ผ่านพารามิเตอร์เป็นอาร์เรย์หรือเป็นวัตถุแต่ละรายการ) นั้นอยู่ในมือของ API โดยใช้การโทรกลับเพื่อให้สามารถใช้งานได้ไม่ว่าการเรียกใช้งานแบบใดจะเหมาะสมที่สุดสำหรับงานภายใน
คลาสที่ซ้อนกัน WithParms นั้นเป็นทางเลือกและให้บริการสองวัตถุประสงค์มันมีอาร์เรย์วัตถุพารามิเตอร์ที่จำเป็นสำหรับการเรียกกลับและมันมี 10 วิธีการเรียกใช้ที่โอเวอร์โหลด () จาก 10 ถึง 10 พารามิเตอร์ซึ่งโหลดอาร์เรย์พารามิเตอร์จากนั้น เรียกใช้เป้าหมายการโทรกลับ