1 package com.boyutec.oss.cw.wage.controller; 2 3 import java.lang.reflect.Method; 4 import java.util.ArrayList; 5 import java.util.List; 6 import com.boyutec.oss.cw.wage.domain.Wage; 7 import com.boyutec.oss.cw.wage.domain.WageMonthTem; 8 9 public class TestCw { 10 public static void main(String[] args) { 11 List<WageMonthTem> temList = new ArrayList<WageMonthTem>(); 12 WageMonthTem wage1 = new WageMonthTem(); 13 wage1.setKeyword("name"); 14 WageMonthTem wage2 = new WageMonthTem(); 15 wage2.setKeyword("department"); 16 WageMonthTem wage3 = new WageMonthTem(); 17 wage3.setKeyword("salary");//基本工资 18 WageMonthTem wage4 = new WageMonthTem(); 19 wage4.setKeyword("ext1");//绩效工资 20 WageMonthTem wage5 = new WageMonthTem(); 21 wage5.setKeyword("ext2");//扣除工资 22 WageMonthTem wage6 = new WageMonthTem(); 23 wage6.setKeyword("ext3");//实发工资 24 temList.add(wage1); 25 temList.add(wage2); 26 temList.add(wage3); 27 temList.add(wage4); 28 temList.add(wage5); 29 temList.add(wage6); 30 31 Wage wage = new Wage(); 32 wage.setName("王宏伟"); 33 wage.setDepartment("产品中心"); 34 wage.setSalary("3000"); 35 wage.setExt1("2500"); 36 wage.setExt2("800"); 37 wage.setExt3("4700"); 38 wage.setExt4("测试4"); 39 wage.setExt5("测试5"); 40 wage.setExt6("测试6"); 41 wage.setExt7("测试7"); 42 wage.setExt8("测试8"); 43 Class<Wage> wageClass = Wage.class; 44 45 for(WageMonthTem wageMonthTem:temList){ 46 String keyword = wageMonthTem.getKeyword(); 47 // 获取无参方法 48 Method getMethod; 49 String methodName = "get"+keyword.substring(0,1).toUpperCase()+keyword.substring(1); 50 try { 51 getMethod = wageClass.getDeclaredMethod(methodName); 52 // 取消安全性检查,设置后才可以调用private修饰的方法,也可以批量对所有方法进行设置 53 getMethod.setAccessible(true);//暂时没有发现有什么用,删掉也不影响 54 // 调用无参方法 55 wageMonthTem.setValue((String) getMethod.invoke(wage)); 56 } catch (Exception e) { 57 e.printStackTrace(); 58 } 59 } 60 61 for(WageMonthTem wageMonthTem:temList){ 62 System.err.println(wageMonthTem.getKeyword()+":"+wageMonthTem.getValue()); 63 } 64 } 65 }
反射可以给对象赋值、调用对象的方法、构造函数等。详情请看