zoukankan      html  css  js  c++  java
  • 比较两个JavaBean对象的不同

    比较两个bean的内容

    /**
     * 比较两个Bean的内容
     *
     * @param <T>
     * @author zhw
     */
    public class ContrastObjUtils<T> {
    
    	public String contrastObj(Object oldBean, Object newBean) {
    		String str = "";
    		T pojo1 = (T) oldBean;
    		T pojo2 = (T) newBean;
    		try {
    			Class clazz = pojo1.getClass();
    			Field[] fields = pojo1.getClass().getDeclaredFields();
    			int i = 1;
    			for (Field field : fields) {
    				if ("serialVersionUID".equals(field.getName())) {
    					continue;
    				}
    				PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
    				Method getMethod = pd.getReadMethod();
    				Object o1 = getMethod.invoke(pojo1);
    				Object o2 = getMethod.invoke(pojo2);
    				if (o1 == null || o2 == null) {
    					continue;
    				}
    				if (!o1.toString().equals(o2.toString())) {
    					if (i != 1) {
    						str += ";  ";
    					}
    					boolean hasAnnotation = field.isAnnotationPresent((Class<? extends Annotation>) CustomFieldName.class);
    
    					String customFieldValue = "";
    					if (hasAnnotation) {
    						CustomFieldName customFieldName = field.getAnnotation(CustomFieldName.class);
    						customFieldValue = customFieldName.value();
    					}
    					// 要显示的字段名
    					String fieldName = "";
    					if (customFieldValue != "") {
    						fieldName = customFieldValue;
    					} else {
    						fieldName = field.getName();
    					}
    
    					str += i + "、" + fieldName + ",旧值:" + o1 + ",新值:" + o2;
    					i++;
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    		return str;
    	}
  • 相关阅读:
    Java 泛型
    Github
    软件工程----前端
    前端全局缓存的三种方式
    关于IDE的选择
    模拟placeholder
    小程序request封装
    小程序实现大转盘抽奖----踩坑之路
    关于this的理解
    小程序背景图片bug
  • 原文地址:https://www.cnblogs.com/creaky/p/10802950.html
Copyright © 2011-2022 走看看