package testcase;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
public class TestCase {
private HashMap<String, HashMap<String,Object>> map = new HashMap<String, HashMap<String, Object>>();
{
HashMap<String,Object> map1 = new HashMap<String, Object>();
map1.put("deptno","123");
map1.put("dname","张三");
map1.put("loc","老板");
map.put("testcase.Dept",map1);
}
public static void main(String[] args) {
System.out.println(new TestCase().getBean("testcase.Dept"));;
}
public Object getBean(String className){
Object obj = null;
try {
Class clazz = Class.forName(className);
//获得构造方法并创建对象
Constructor constructor = clazz.getConstructor();
obj = constructor.newInstance();
//获取本类中的所有属性
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
//获取属性对性的set方法,并执行赋值
String setMathodName = new StringBuffer("set").append(field.getName().substring(0,1).toUpperCase()).append(field.getName().substring(1)).toString();
Method method = clazz.getDeclaredMethod(setMathodName,field.getType());
//能处理char以外的其他七个基本数据类型
//还有char类型/数组集合对象等类型没有处理
Object object = field.getType().getConstructor(String.class).newInstance(map.get(className).get(field.getName()));
method.invoke(obj,object);
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交