日期:2014-05-20  浏览次数:20771 次

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;
    }