ดังนี้:
วัตถุสาธารณะ invokemethod (String className, String MethodName, Object [] args) โยนข้อยกเว้น {คลาส ownererClass = class.forName (className); OwnereRs.newInstance (); คลาส [] argsclass = คลาสใหม่ [args.length]; สำหรับ (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); } method method = OwnerClass.getMethod (MethodName, ArgsClass); return method.invoke (เจ้าของ, args);}อย่างไรก็ตามในแอปพลิเคชันจริงของเราเราจะพบกับสถานการณ์ที่พารามิเตอร์จริงที่เข้ามาและพารามิเตอร์อย่างเป็นทางการของวิธีการที่จะเรียกอาจไม่สอดคล้องกันอย่างสมบูรณ์:
ตัวอย่างเช่นเมื่อมีการเรียกวิธีการใน struts1.x มันจะมีพารามิเตอร์ของประเภท httpservletResponse
ใน Tomcat อินสแตนซ์ของวัตถุคำขอเป็นจริง: org.apache.catalina.connector.responsefacade
มันใช้อินเตอร์เฟส: javax.servlet.http.httpservletResponse;
หากเราปฏิบัติต่อวัตถุคำขอโดยตรงในเว็บคอนเทนเนอร์เป็นพารามิเตอร์และส่งผ่านไปยังตัวอย่างโค้ดด้านบนจะมีปัญหา ในเวลานี้วิธีการจัดการของเราเป็นเช่นนี้ ในการดำเนินการวิธีการโดยทั่วไปเช่น:
Public Actionforward Query (การทำแผนที่การทำแผนที่, แบบฟอร์ม ActionForm
คำขอ httpservletrequest, การตอบสนอง httpservletResponse)
การตอบสนองโดยทั่วไปจะอยู่ในช่วงที่สี่ดังนั้นให้แก้ไขรหัสด้านบน:
มัด
สำหรับ (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); -เปลี่ยนเป็น:
สำหรับ (int i = 0, j = args.length; i <j; i ++) {ถ้า (i == 3) {argsclass [i] = httpservletResponse.class; } else {argsclass [i] = args [i] .getClass (); -บทสรุปข้างต้น (แนะนำ) ของการเรียกใช้วิธีการบางอย่างผ่านกลไกการสะท้อน Java เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น