通过反射拷贝一个类的属性值方法:
package com.wansha.reflect; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ClassCopy { public Object copyof(Object object)throws Exception{ Class<?> classType = object.getClass(); Object obj = classType.newInstance(); Field[] fields = classType.getDeclaredFields(); for(Field field : fields){ String fieldName =field.getName().substring(0,1).toUpperCase()+field.getName().substring(1); Method setmethod = classType.getMethod("set"+fieldName,new Class[]{field.getType()}); Method getmethod = classType.getMethod("get"+fieldName,new Class[]{}); setmethod.invoke(obj,new Object[]{getmethod.invoke(object,new Object[]{})}); System.out.println(setmethod.getName()+"============"+getmethod.getName()); } return obj; } public static void main(String[] args) throws Exception{ ClassCopy copy = new ClassCopy(); Object obj = copy.copyof(new Person2("sharp",30)); System.out.println((Person2)obj); } } class Person2{ private Long id; private String name; private int age; public Person2(String name, int age) { this.name = name; this.age = age; } public Person2() { super(); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "name-->"+name+" age-->"+age; } }