比較兩個JavaBean對象的不同
阿新 • • 發佈:2019-05-02
onu null fields prope ras tor 不同 rop ssi
比較兩個bean的內容
/** * 比較兩個Bean的內容 * * @param <T> * @author SSISS */ 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; }
比較兩個JavaBean對象的不同