ฟิลด์ของหน้ารายการกำหนดให้สามารถเรียงลำดับตามการตั้งค่าของผู้ใช้ดังนั้นฟิลด์ของผู้ใช้แต่ละฟิลด์จะสอดคล้องกับลำดับที่แตกต่างกัน (ลำดับฟิลด์จะถูกเก็บไว้ในฐานข้อมูล) ค่าที่เรานำมาจากฐานข้อมูลคือวัตถุ แต่ค่าการถ่ายโอนเบื้องหน้าคืออาร์เรย์ AJAX และ JSON ดังนั้นเราจึงเผชิญกับปัญหาของการแปลงแบบ object-to-JSON: 1. ลำดับฟิลด์ของผู้ใช้แต่ละคนไม่ได้รับการแก้ไขและรหัสไม่สามารถเขียนได้ 2. รับค่าตามลำดับฟิลด์ของผู้ใช้ หากคุณใช้หากจะตัดสินแต่ละค่าแล้วเรียกใช้วิธีอื่นมีจำนวนมากเกินไปถ้ามีเงื่อนไข จากนั้นฉันก็ดูภาพสะท้อน
คลาสรุ่นเหมือนกับรุ่นปกติ
บุคคลชั้นเรียนสาธารณะ {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; ที่อยู่สตริงส่วนตัว สตริงส่วนตัว phonenumber; เซ็กซ์สตริงส่วนตัว; สตริงสาธารณะ getName () {ชื่อคืน; } // ต่อไปนี้เป็นวิธีการรับและตั้งไว้ - ชั้นเรียนทดสอบ
นำเข้า java.lang.reflect.invocationTargetException; นำเข้า java.lang.reflect.method; นำเข้า java.util.arraylist; นำเข้า java.util.list; การทดสอบระดับสาธารณะ {// วัตถุบุคคลเริ่มต้น INIRPERSON ส่วนตัว () {บุคคล P = บุคคลใหม่ (); P.SetName ("ชื่อ"); p.setage (21); P.SetAddress ("นี่คือ addrss ของฉัน"); P.SetPhonenumber ("12312312312"); P.Setsex ("F"); กลับ P; } โมฆะคงที่สาธารณะหลัก (String [] args) โยนความปลอดภัย exception, nosuchmethodexception, ungloralargumentException, unlilmoulaccessexception, invocationTargetException {ทดสอบทดสอบ = การทดสอบใหม่ (); บุคคล p = test.initperson (); รายการ <string> list = new ArrayList <String> (); // เพิ่มวิธีการทั้งหมด // ไม่มีชื่อวิธีการ list.add ("getName"); list.add ("getage"); list.add ("getAddress"); list.add ("getphonenumber"); list.add ("getsex"); สำหรับ (String str: list) {// รับอินสแตนซ์เมธอด พารามิเตอร์แรกคือชื่อเมธอดและพารามิเตอร์ที่สองคือประเภทพารามิเตอร์ // เนื่องจาก Java ออกจากวิธีการเดียวกันของพารามิเตอร์ที่แตกต่างกันมีเพียงชื่อวิธีและประเภทพารามิเตอร์เท่านั้นที่สามารถยืนยันวิธีการ วิธีการ = p.getClass (). getMethod (str, คลาสใหม่ [0]); // พารามิเตอร์แรกของเมธอด Invoke คือวัตถุที่เรียกวิธีนี้ // พารามิเตอร์ที่สองคือพารามิเตอร์ System.out.println (str + "(): รับค่าคือ" + method.invoke (p, วัตถุใหม่ [0])); -นอกจากนี้คุณยังสามารถใช้ฟิลด์ที่ได้จากฐานข้อมูลเพื่อรับค่าที่สอดคล้องกันจากวัตถุ
วิธีการข้างต้นจำเป็นต้องเพิ่มชื่อวิธี GET ลงในรายการเพื่อให้สามารถรับค่าได้ตามชื่อ GET Method ที่สอดคล้องกัน หากเบื้องหน้าเป็นเพียงชื่อคุณสมบัติเราต้องแปลงเป็นวิธี GET ที่สอดคล้องกันซึ่งเป็นปัญหา
โมฆะคงที่สาธารณะ GetValueByProperty (บุคคล P, String PropertyName) พ่น IntropcectionException, unglemalargumentException, unlendalAccessException, InvocationTargetException {// รับทรัพย์สินโดยอาร์กิวเมนต์อสังหาริมทรัพย์ PropertyDescriptor PD = ใหม่ PropertyDescriptor (PropertyName, P.GetClass ()); วิธีการ = pd.getReadMethod (); Object O = method.invoke (P); System.out.println ("PropertyName:" + propertyName + "/t ค่าคือ:" + o); } โมฆะคงที่สาธารณะหลัก (String [] args) โยนความปลอดภัย exception, nosuchmethodexception, unlegalargumentexception, unlilmoulaccessexception, ravecocationTargetException, introspectionException {ทดสอบทดสอบ = การทดสอบใหม่ (); บุคคล p = test.initperson (); // รับคุณสมบัติทั้งหมด ฟิลด์ [] ฟิลด์ = p.getClass (). getDeclaredFields (); สำหรับ (ฟิลด์ฟิลด์: ฟิลด์) {getValueByProperty (p, field.getName ()); - ด้วยวิธีนี้คุณสามารถรับค่าที่สอดคล้องกันโดยตรงผ่าน PropertyName ที่ผ่าน
บทความด้านบน Java Reflection เรียกใช้วิธีการที่แตกต่างกันแบบไดนามิก (ตัวอย่าง) ตามชื่อวิธีการต่าง ๆ คือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น