public class User {
private int id;
private String username;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
import java.lang.reflect.Method;
import org.junit.Test;
import cn.xyurp.junit.bean.User;
public class AutoSetDemo {
/**
* 通过一个对象自动setter
*
* @throws Exception
*/
@Test
public void testUser() throws Exception {
User o = new User();
o.setId(1);
o.setUsername("o");
User oo = new User();
oo.setId(11);
oo.setUsername("oo");
oo = (User) autoGetterAndSetter(o, oo);
System.out.println("xxxx " + oo.getId());
System.out.println("xxxx " + oo.getUsername());
}
public Object autoGetterAndSetter(Object src, Object target) throws Exception {
Method[] sms = src.getClass().getMethods(); // 原始类方法 srcMethod
Method[] tms = target.getClass().getMethods(); // 目标类防范 targetMethod
for (Method sm : sms) {
if (sm.getName().startsWith("get")) { // 原始类的 getter
String attrName = sm.getName().substring(3);// 属性
for (Method tm : tms) {// 遍历目标类
if (("set" + attrName).equals(tm.getName())) {// 执行目标类的指定attrName的setter
tm.invoke(target, sm.invoke(src));
}
}
}
}
return target;
}
}