做项目的过程中正好需要比较两个对象是否相等,通过导师的指点,运用反射的原理完成了这个功能。突然发现,反射是一个很有用的工具,可以解决很多原来不能解决的事情。
判断两个对象是否相等
两个对象的相等当然可以通过重写equals() 和 hashcode() 进行实现,但是对于在项目中已经封装好的,而并没有重写equals() 和 hashcode() 方法的类,使用反射就可以判断两个对象是否相等了。
public static String compare2Obj(AccountDto obj1, AccountDto obj2) {
Class<?> obj1Class = obj1.getClass();
Class<?> obj2Class = obj2.getClass();
Field[] obj1Field = obj1Class.getDeclaredFields();
Field[] obj1SupField = obj1Class.getSuperclass().getDeclaredFields();
int obj1FieLen = obj1Field.length;
int obj1SupFieLen = obj1SupField.length;
// getDeclaredFields() 不能够返回父级的对象,所以需要调用superclass 然后进行反射
obj1Field=HelperUtil.combineArray(Field.class, obj1Field,obj1SupField);
String newStr = "";
String tempStr = "";
// 使得obj1Field 方法有序
HelperUtil.sort