创建两个对象,源对象PersonVo和目标对象Person package cn.com; public class Person { private int id; private String name; private String sex; private boolean isGood; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public boolean isGood() { return isGood; } public void setGood(boolean isGood) { this.isGood = isGood; } } package cn.com; public class PersonVo { private int id; private String name; private String sex; private boolean isGood; private String a; public String getA() { return a; } public void setA(String a) { this.a = a; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public boolean isGood() { return isGood; } public void setGood(boolean isGood) { this.isGood = isGood; } } 创建一个操作类,用来做复制操作的 Properties: package cn.com; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Properties { public void copy(Object source,Object dest){ //取得源对象和目标对象的类实例,取得源对象的方法属性 Class c1 = source.getClass(); Method []methods = c1.getMethods(); Class c2 = dest.getClass(); //遍历方法属性 for(Method m:methods){ //把源对象的方法名取出 String methodName = m.getName(); //将属性的名称保存在propertyName String propertyName = null; //判断源对象如果以get或者is开始,则将属性名称保存到propertyName if(methodName.startsWith("get") ){ propertyName = methodName.substring(3); } if(methodName.startsWith("is") ){ propertyName = methodName.substring(2); } //当属性名称不为空的时候 if(propertyName!=null){ //将方法的返回类型保存 Class propertyType = m.getReturnType(); //设置目标对象的方法名称 String propertyMethod = "set"+propertyName; Method method; try { //在目标对象中查找,看看目标对象是否存在这个方法,如果没有,会抛出异常 method = c2.getMethod(propertyMethod, propertyType); //调用源对象的方法,返回属性值 Object sourceValue = m.invoke(source); //调用目标对象的方法,设置相应属性值 method.invoke(dest, sourceValue); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block //e.printStackTrace(); System.out.println("在目标对象中没有找到这个方法"+m.getName()); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } 创建一个测试类: ClassTest: package cn.com; public class ClassTest { public static void main(String[]args){ //创建一个PersonVo对象,用来测试 PersonVo pv = new PersonVo(); pv.setId(1); pv.setName("ningbingjian"); pv.setSex("male"); pv.setGood(true); Person person = new Person(); //进行对象复制 Properties properties = new Properties(); properties.copy(pv, person); System.out.println(person.getName()); System.out.println(person.getId()); System.out.println(person.getSex()); System.out.println(person.isGood()); } }