การแนะนำ
ก่อนอื่นให้ฉันแนะนำคำอธิบายที่ใช้งานได้จริงน้อยลง: กลไกการสะท้อน Java คือในสถานะการทำงานสำหรับชั้นเรียนใด ๆ คุณสามารถรู้คุณสมบัติและวิธีการทั้งหมดของคลาสนี้ สำหรับวัตถุใด ๆ คุณสามารถเรียกวิธีการและคุณสมบัติใด ๆ ของมัน ฟังก์ชั่นของการรับข้อมูลแบบไดนามิกนี้และวิธีการเรียกวัตถุแบบไดนามิกเรียกว่ากลไกการสะท้อนกลับของภาษา Java
ใช้ง่าย
การสะท้อนกลับเป็นวิธีที่พบได้บ่อยและใช้งานง่ายใน Java (แต่คุณจำเป็นต้องรู้ว่าประสิทธิภาพของมันค่อนข้างต่ำดังนั้นคุณควรใช้ด้วยความระมัดระวัง) แน่นอนว่ามันสามารถใช้ใน Android ตามภาษา Java เราสามารถใช้การสะท้อนกลับเพื่อให้ได้คลาสที่ไม่เปิด แต่มีอยู่เพื่อเรียกใช้วิธีการบางอย่าง เรามาเขียนสั้น ๆ ด้านล่างโดยใช้การสะท้อน Java เพื่อรับคลาสและการใช้วิธีการที่เรียกว่า
// พา ธ ของคลาสที่ต้องเรียกว่าสะท้อนสตริง className = "com.example.test.javareflect"; class rechorm = null; ลอง {// รับ Java class rechul = class.forname (className); // อินสแตนซ์ javareflect วัตถุคลาสที่สอดคล้องกัน = revelion.newinstance (); if (null! = javareflect) {// สะท้อนเมธอด stringToup () ในคลาสคลาส stringtoup เป็นชื่อเมธอดและ string.class เป็นประเภทพารามิเตอร์เมธอด stringtoup = revel.getDeclaredMethod ("StringToup", String.class); // ยกเลิกการตรวจสอบความถูกต้องตามกฎหมายของการเข้าถึงวิธีส่วนตัว StringToup.SetAccessible (จริง); // คำนวณเมธอด stringToup () พารามิเตอร์แรกหมายถึงคลาสที่สอดคล้องกันและที่สองคือพารามิเตอร์ของวิธีสตริง str = (string) stringtoup.invoke (javareflect, "java rechorm test test"); System.out.println ("ผลลัพธ์:"+str); }} catch (exception e) {e.printstacktrace ();} มาดูสิ่งที่ฉันทำใน StringToup:
สตริงสตริงสาธารณะ (สตริง str) {return str.touppercase ();}ในความเป็นจริงมันเป็นเพียงสตริงที่จะแปลงเป็นทุนแล้วกลับมา ตกลงมาดูผลลัพธ์ผลลัพธ์:
01-02 08: 09: 11.959 6150-6150/com.zxf.alpha I/System.out: ผลการทดสอบ: Java สะท้อนการทดสอบ
มันสมบูรณ์แบบ
สรุป
ตกลงข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ การสะท้อนกลับมีแอพพลิเคชั่นมากมายใน Android ตัวอย่างเช่นเมื่อโครงการของเรามีหลายโมดูลคุณสามารถทำสิ่งนี้ได้หากคุณต้องการเรียกวิธีการของโปรแกรมหลักในโมดูลหรือคุณสามารถใช้การสะท้อนกลับเพื่อเรียกใช้วิธีการสาธารณะบางอย่าง แต่ประสิทธิภาพไม่สูงมาก ฉันหวังว่าเนื้อหาของบทความนี้จะเป็นประโยชน์กับทุกคนในการเรียนรู้หรือใช้รังสีใน Java หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร