1. 程式人生 > >表當提交時,把物件中非空屬性更新到另一個物件中

表當提交時,把物件中非空屬性更新到另一個物件中

實體類

public class Person {     private String name;     private Integer age;     private String sex;     private String address;     private int hight;          public Person() {         super();     }

    public String getName() {         return name;     }     public Person(String name, Integer age, String sex, String address, int hight) {         super();         this.name = name;         this.age = age;         this.sex = sex;         this.address = address;         this.hight = hight;     }

    public void setName(String name) {         this.name = name;     }     public Integer getAge() {         return age;     }     public void setAge(Integer age) {         this.age = age;     }     public String getSex() {         return sex;     }     public void setSex(String sex) {         this.sex = sex;     }     public String getAddress() {         return address;     }     public void setAddress(String address) {         this.address = address;     }

    public int getHight() {         return hight;     }

    public void setHight(int hight) {         this.hight = hight;     }

    @Override     public String toString() {         return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", address=" + address + ", hight=" + hight + "]";     }         }

main方法測試

public class test1 {

    public static void main(String[] args) throws Exception {                                 Person srcPerson = new Person("小明明",null,"男","深圳",188);         Person tarPerson = new Person("小明",1,"男","北京",159);          System.out.println(tarPerson);         dataTransfer(srcPerson,tarPerson);         System.out.println(tarPerson);         dataTransfer(null,tarPerson);             }                    /**      * 把物件中非空屬性更新到另一個物件中      * (表單提交時使用注意:由於物件初始化時基本型別初始化 如int =0 這時無法判斷0是初始化的還是 表單傳過來的,      * 所以傳入物件保證屬性無基本型別包括bolean型別)      * @param src      * @param tar      * @throws Exception      */     public static void dataTransfer(Object src,Object tar) throws Exception  {         if(src==null || tar ==null){             throw new Exception("dataTransfer(Object src,Object tar)傳入物件為空");         };                 Class<?> srcClass = src.getClass();           Class<?> tarClass = tar.getClass();         if(srcClass != tarClass){             throw new Exception("傳入物件型別不同");         }                  Field[] fields = srcClass.getDeclaredFields();                  Field.setAccessible(fields, true);         String type;         for (Field field : fields) {             type = field.getType().getSimpleName();             if(Modifier.isStatic(field.getModifiers()) || Modifier.isFinal(field.getModifiers()))continue;             if(field.get(src)==null || field.get(src) == field.get(tar))continue;                          if("byte/short/int/long/float/double/char/boolean/Byte/Short/Integer/Long/Float/Double/Character/Boolean/String/Date/List/Set/Map".contains(type)){                 field.set(tar, field.get(src));             }else{                 dataTransfer(field.get(src),field.get(tar));             }                          //System.out.println(field.getType().getSimpleName()+"  "+field.getName()+":"+field.get(tar));         }     }

}