Person对象p1,p2,将p2中的非空属性赋给p1,如何做?
有一个类Person,里面有30个属性,有一个Person对象p1,30个属性全部有值,有一个Person对象p2,有10个属性有值,比如p2.name="tom",p2.age=20...
现在要只把p2里面有值的属性值赋给p1,如将tom,20等赋给p1,p2里birthday属性为空,则p1里的birthday属性值不变,其余属性类似。
因为属性很多,想用反射和循环来做一个通用的方法,不仅Person类,任何类都能用,具体怎么写?
Person是一个bean,属性私有,相应的get set 方法公有
------解决方案--------------------可不可以,if(p2.xx!=null){p1.xx=p2.xx}
------解决方案--------------------Java code
public <T> T copyAttribute(T t1, T t2) throws IllegalArgumentException, IllegalAccessException {
Class classz = t1.getClass();
Field[] fieldArr = classz.getDeclaredFields();
for(Field f : fieldArr){
Object value = f.get(t2);
if(value != null){
f.set(t1, value);
}
}
return t1;
}