เมื่อเร็ว ๆ นี้เนื่องจากโมดูลที่รับผิดชอบโครงการมีหลายหมวดหมู่ภายใต้โมดูลนี้และแต่ละหมวดหมู่มีรหัสที่เข้ารหัสและค่านี้จะดำเนินการเป็นพารามิเตอร์ แต่แต่ละรหัสจะสอดคล้องกับวิธีการ
มีค่ารหัสมากมายและฉันไม่ต้องการให้ IFELSE หรือเปลี่ยนการตัดสินดังนั้นฉันจึงค้นหาข้อมูลซึ่งส่วนใหญ่ทำให้ฉันพบว่าการใช้กลไกการสะท้อนของ Java สามารถแก้ปัญหานี้ได้อย่างสมบูรณ์แบบ
รหัสทดสอบมีดังนี้ (สามารถพกพาพารามิเตอร์ได้หลายตัว)
แพ็คเกจ com.escs.xmlutils; นำเข้า java.lang.reflect.method; การทดสอบระดับสาธารณะ {สตริงสาธารณะ ceshi () {system.out.println ("11111111111111111111); กลับ" ความสำเร็จ ";} สาธารณะคงที่ class.forname ("com.escs.xmlutils.test"); object obj = c.newinstance (); // พารามิเตอร์แรกถูกเขียนเป็นชื่อวิธีการที่สอง/สาม/... มันถูกเขียนเป็นประเภทของพารามิเตอร์ในเมธอดเมธอด/c.getMethod ("ceshi2" (String) Method.invoke (obj, วัตถุใหม่ [] {"myname", 4}); System.out.println (Str2); } สตริงสาธารณะ ceshi (string str) {// สำหรับ (int j = 0; j <integer.valueof (i); j ++) {system.out.println (str); //} return str; } สตริงสาธารณะ ceshi2 (สตริง str, int i) {สำหรับ (int j = 0; j <i; j ++) {system.out.println (str+"22222"); } return str; - สิ่งนี้จะทำให้ง่ายขึ้นหากชื่อเมธอดถูกประกบกันแบบไดนามิก ตัวอย่างเช่นค่ารหัสของฉันมี 100, 1 ~ 100 และวิธีรหัสของฉันคือ returnCodelist (); ในเวลานี้เราแยกวิธีข้างต้นและส่งคืนค่าที่เราต้องการตัวอย่างเช่น:
Public String FanShe (String MethodName, String className) พ่น classnotFoundException, SecurityException, nosuchmethodexception, InstantiationException, unlegalAccessException, unlegalArgumentException, การเรียกใช้การกำหนดเป้าหมาย {// เขียนชื่อคลาสและเส้นทางของคุณเอง ชื่อที่สอง/สาม/... เขียนประเภทของพารามิเตอร์ในเมธอดเมธอดเมธอดเมธอด = c.getMethod (เมธอด, สตริง, คลาส, int.class); // เรียกใช้วิธีการนี้และดำเนินการสตริงค่าพารามิเตอร์ str2 = (สตริง) str2; retr2; -แน่นอนว่าในความต้องการจริงคุณยังต้องวาดวิธีการด้วยตัวเองตามความต้องการของโครงการ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน
ตัวอย่างข้างต้นของวิธีการดำเนินการแบบไดนามิกของชื่อเมธอด Java Reflection splicing คือเนื้อหาทั้งหมดที่ใช้ร่วมกันโดยตัวแก้ไข ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น