创建两个包含某些属性的对象 package cn.com; public class Person { private String name; 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; } private String sex; } package cn.com; public class User { private String name; private String sex; private int 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 int getId() { return id; } public void setId(int id) { this.id = id; } } 创建测试类 package cn.com; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ClassTest { public static void main(String[]args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{ //定义一个Person对象, Person person= new Person(); person.setName("ningbingjian"); person.setSex("man"); User user = null; //将创建的Person对象当做复制的源对象传进去进行复制操作 user= copy(person,user); System.out.println(user.getName()); System.out.println(user.getId()); System.out.println(user.getSex()); } //定义一个COPY方法,返回复制的目标对象 public static User copy(Person souce,User dest) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { String name =null; String sex =null; int id =0 ; //获取Person的属性域和方法 Class c1 = Person.class; Field[]person_fields = c1.getDeclaredFields(); Method[]person_methods = c1.getDeclaredMethods(); //获取User的属性和方法 dest = new User(); Class c2 = User.class; Field[]user_fields = c2.getDeclaredFields(); Method[]user_methods = c2.getDeclaredMethods(); //如果Person中包含有User的属性,则把包含的属性的属性值的取出来 for(int i=0;i<person_fields.length;i++){ person_fields[i].setAccessible(true); if(person_fields[i].getName().equals("name")){ name = (String)person_fields[i].get(souce); } if(person_fields[i].getName().equals("sex")){ sex = (String)person_fields[i].get(souce); } if(person_fields[i].getName().equals("id")){ id = (Integer)person_fields[i].get(souce); } } //对User进行赋值操作 for(int i=0;i<user_methods.length;i++){ if(user_methods[i].getName().endsWith("setName")){ user_methods[i].invoke(dest,name) ; } if(user_methods[i].getName().endsWith("setSex")){ user_methods[i].invoke(dest,sex) ; } if(user_methods[i].getName().endsWith("setId")){ user_methods[i].invoke(dest,id) ; } } return dest; } }