ตัวอย่างในบทความนี้อธิบายถึงวิธีที่ Java ใช้การสะท้อนเพื่อห่อหุ้มออบเจ็กต์เอนทิตีโดยอัตโนมัติ แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
เมื่อใช้วิธีการนี้ ชื่อของพารามิเตอร์ที่ต้องส่งจะต้องลงท้ายด้วยหมายเลขแถว หากหมายเลขแถวถูกลบออก จะเป็นชื่อแอตทริบิวต์ ตัวอย่างเช่น หากเพจส่งผ่าน name+rowNo จะเป็นชื่อแอตทริบิวต์ ของวัตถุเอนทิตีควรเป็นชื่อ รหัสมีดังนี้ คัดลอกรหัส โค้ดมีดังนี้: // รับข้อมูลหน้าและสรุปลงในวัตถุ bean โดยอัตโนมัติ
รายการสาธารณะ getObjectList (คลาส clazz, String [] rowNos) ส่งข้อยกเว้น {
รายการ objList = ใหม่ ArrayList();
สำหรับ(int i=0;rowNos!=null && i<rowNos.length;i++){
//สร้างอินสแตนซ์วัตถุ
วัตถุ วัตถุ = clazz.newInstance();
// รับคุณสมบัติที่คลาสประกาศไว้
ฟิลด์ [] = clazz.getDeclaredFields();
บัฟเฟอร์ StringBuffer = null;
//สำรวจคุณสมบัติและทำการห่อหุ้ม
สำหรับ(int j=0;j<fields.length;j++){
//รับชื่อของแอตทริบิวต์
สตริง fieldName = ฟิลด์[j].getName();
//รับชื่อของพารามิเตอร์
สตริง paraName = ฟิลด์[j].getName()+rowNos[i];
//หากค่าพารามิเตอร์ที่ได้รับว่างเปล่า ให้ดำเนินการวนซ้ำต่อไป
ค่าสตริง = getValueNull (paraName);
ถ้า(ค่า==null){
ดำเนินการต่อ;
-
//ค่าพารามิเตอร์
วัตถุ [] paramValue = วัตถุใหม่ [1];
if(fields[j].getType().toString().equals("class java.lang.String")){
paramValue[0]=ค่า;
-
if(fields[j].getType().toString().equals("class java.lang.Integer")){
paramValue[0]=จำนวนเต็มใหม่ (ค่า);
-
if(fields[j].getType().toString().equals("class java.lang.Double")){
paramValue[0]=ใหม่ สองเท่า (ค่า);
-
if(fields[j].getType().toString().equals("class java.util.Date")){
SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd");
paramValue[0]=sdf.parse(ค่า);
-
//ประเภทพารามิเตอร์
คลาส[] paramType= {ฟิลด์[j].getType()};
//รับชื่อของเมธอด set
buffer = new StringBuffer("set");
buffer.append(fieldName.substring(0, 1).toUpperCase());
buffer.ผนวก(fieldName.substring(1));
//รับแล้วใส่กลับ.
วิธีการ วิธีการ = clazz.getDeclaredMethod(buffer.toString(), paramType);
//วิธีการดำเนินการ
วิธีการวิงวอน (วัตถุ paramValue);
-
//ใส่วัตถุปัจจุบันลงในรายการ
objList.add(วัตถุ);
-
กลับ objList;
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน