java.lang.refect反射UserForm

来源:互联网 发布:js删除tbody中的tr 编辑:程序博客网 时间:2024/05/21 05:22
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import com.chai.form.UserForm;import comm.chai.vo.UserVo;public class test {public static void Copyreflect(Object obj1, Object obj2) {Class classobj1 = obj1.getClass();Class classobj2 = obj2.getClass();Field[] fields = classobj1.getDeclaredFields();for (int i = 0; i < fields.length; i++) {Field field = fields[i];String setMethodname = "set"+ field.getName().substring(0, 1).toUpperCase()+ field.getName().substring(1);String getMethodname = "get"+ field.getName().substring(0, 1).toUpperCase()+ field.getName().substring(1);try {if (field.getType() == String.class) {Method getmethod = classobj1.getDeclaredMethod(getMethodname, new Class[] {});Method setmethod = classobj2.getDeclaredMethod(setMethodname, new Class[] { String.class });setmethod.invoke(obj2, new Object[] { getmethod.invoke(obj1, new Object[] {}) });}else if (field.getType() == int.class) {Method getmethod = classobj1.getDeclaredMethod(getMethodname, new Class[] {});Method setmethod = classobj2.getDeclaredMethod(setMethodname, new Class[] { int.class });setmethod.invoke(obj2, new Object[] { getmethod.invoke(obj1, new Object[] {}) });}} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {UserForm form = new UserForm();form.setUsername("chai");form.setId(1000);UserVo vo = new UserVo();Copyreflect(form, vo);System.out.println(vo.getUsername()+"=="+vo.getId());}}