java 打印对象属性 工具类_java 对象属性比较工具类

package com.zxy.product.human.web.log; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import com.google.common.collect.Maps; /**  * BeanUtil 对象属性比较工具类  * @author zzg  *   **/ public class BeanUtil {     public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {         // TODO Auto-generated method stub         BeanUtil util = new BeanUtil();         //excel 读取数据         Person excel = util.new Person();         excel.setId("1");         excel.setAge("18");         excel.setName("知学云1");         //database 读取数据         Person database = util.new Person();         database.setId("1");         database.setAge("16");         database.setName("知学云");        Map> map = util.getMap(excel);         //遍历map //        for (Map.Entry entry : map.entrySet()) { //            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); //        }         boolean flag = util.getFieldEqual(database, map);         System.out.println("属性值是否发生改变:"+ flag);         Map> fields = util.getFieldUpdate(database, map);         Map c = fields.get(database.getId());         for (Map.Entry entry : c.entrySet()) {           System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());       }     }     // 指定Bean对象 关联属性转换为Map     public Map> getMap(Person object) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{         Map> obj = new HashMap>();         Map map = Maps.newHashMap();         Class> cls = object.getClass();         Field[] fields = cls.getDeclaredFields();         for(Field field : fields){             Object value = getFieldValue(object, field.getName());             String key = field.getName();             map.put(key, value);         }         obj.put(object.getId(), map);         return obj;     }     // Bean 关联属性转换为Map     public Map getMapProperties(Person object) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{         Map map = Maps.newHashMap();         Class> cls = object.getClass();         Field[] fields = cls.getDeclaredFields();         for(Field field : fields){             Object value = getFieldValue(object, field.getName());             String key = field.getName();             map.put(key, value);         }         return map;     }     // 获取指定Field 属性值     public Object getFieldValue(Object obj, String fieldName) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{         Class> cls = obj.getClass();         Object value = null;         Field field = cls.getDeclaredField(fieldName);;         field.setAccessible(true);         value = field.get(obj);         return value;     }     //判断指定对象的属性值是否相等     public boolean getFieldEqual(Person object, Map> map) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{         boolean flag = false;         Class> cls = object.getClass();         Field[] fields = cls.getDeclaredFields();         if(map.containsKey(object.getId())){             Map content = map.get(object.getId());             for(Field field : fields){                 Object excel = content.get(field.getName());                 Object database = getFieldValue(object,field.getName());                 if(excel == null && database == null){                     flag = false;                 }else if(excel != null && database == null){                     flag = true;                     break;                 }else if(excel == null && database != null){                     flag = true;                     break;                 }else if(excel != null && database != null){                     if(excel.equals(database)){                         flag = false;                     }else{                         flag = true;                         break;                     }                 }             }         }         return flag;     }     // 返回匹配对象修改的属性值     public  Map> getFieldUpdate(Person object, Map> map) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{         Map> result =new HashMap>();         Class> cls = object.getClass();         Field[] fields = cls.getDeclaredFields();         Map content = map.get(object.getId());         if(map.containsKey(object.getId())){             Map f = new HashMap();             for(Field field : fields){                 Object excel = content.get(field.getName());                 Object database = getFieldValue(object,field.getName());                 //属性值判断:四种情况                 if(excel != null && database!= null){                     if(!excel.equals(database)){                         f.put(field.getName(), excel);                      }                 }else if(excel == null && database == null){                 }else if(excel != null && database == null){                         f.put(field.getName(), excel);                 }else if(excel == null && database != null){                         f.put(field.getName(), null);                 }             }             result.put(object.getId(), f);         }         return result;     }     public class Person{         private String id;         private String name;         private String age;         private String sex;         public String getId() {             return id;         }         public void setId(String id) {             this.id = id;         }         public String getName() {             return name;         }         public void setName(String name) {             this.name = name;         }         public String getAge() {             return age;         }         public void setAge(String age) {             this.age = age;         }         public String getSex() {             return sex;         }         public void setSex(String sex) {             this.sex = sex;         }     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值