POJO的填充,利用反射,通过对set方法的调用完成。但是,即使没有set方法也是可以实现赋值。 Student.java package com.domain; public class Student { private int student_id; private String sn = ""; private String sd = ""; private int sa; public int getStudent_id() { return student_id; } public void setStudent_id(int student_id) { this.student_id = student_id; } public String getSn() { return sn; } public void setSn(String sn) { this.sn = sn; } public String getSd() { return sd; } public void setSd(String sd) { this.sd = sd; } public int getSa() { return sa; } public void setSa(int sa) { this.sa = sa; } } DumpMethods.java package com.test.reflection; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import com.domain.Student; public class DumpMethods { private Map<String, String> map = new HashMap<String, String>(); { map.put("student_id", "1"); map.put("sn", "张三"); map.put("sd", "单位一"); map.put("sa", "18"); } public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException { Object obj = Class.forName("com.domain.Student").newInstance(); Field[] fields = obj.getClass().getDeclaredFields(); DumpMethods t = new DumpMethods(); try { t.setMethodsByFields(obj, fields); Student st = (Student)obj; System.out.println(st.getSn()); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } public void setMethodsByFields(Object object, Field[] fields) throws SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { for(int i=0; i<fields.length; i++) { String fieldName = fields[i].getName(); String fieldValue = map.get(fieldName); Object fieldvalueN = null; if (fields[i].getType().equals(int.class)) { fieldvalueN = Integer.parseInt(fieldValue); } else if (fields[i].getType().equals(String.class)) { fieldvalueN = fieldValue; } // else if...其他类型 String methodName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); Method method = null; try { // 有set方法,调用set方法赋值 method = object.getClass().getMethod(methodName, new Class[]{fields[i].getType()}); } catch (NoSuchMethodException e) { // 没有set方法,直接赋值,需要把访问权限打开,操作完成关闭访问权限。 fields[i].setAccessible(true); fields[i].set(object, fieldvalueN); fields[i].setAccessible(false); } if (method != null) { method.invoke(object, new Object[]{fieldvalueN}); } } } }