摘要:
在Java中对自定义对象的判等比较。
代码如下:
/**
* 【实现自定义对象比较】
* @param object
* @param objectOther
* @return 返回比较结果 - true表示两对象相等 / false表示两对象不相等
*/
public boolean compareToMyObject(Object object, Object objectOther) {
try {
if (object==null && objectOther==null){
return true;
} else if ( (object==null && objectOther!=null) || (object!=null && objectOther==null) ){
return false;
} else if (object.getClass().getDeclaredFields().length != objectOther.getClass().getDeclaredFields().length){
return false;
} else {
Field[] fields = object.getClass().getDeclaredFields();
String getMethodName;
Method getMethod;
Object objectValue, objectOtherValue;
for (int i=0; i<fields.length; i++) {
getMethodName = "get" + fields[i].getName().substring(0, 1).toUpperCase() + fields[i].getName().substring(1);
getMethod = object.getClass().getMethod(getMethodName, new Class[]{});
objectValue = getMethod.invoke(object, new Object[]{});
objectOtherValue = getMethod.invoke(objectOther, new Object[]{});
if (objectValue==null && objectOtherValue==null){}
else if( (objectValue==null && objectOtherValue!=null) || (objectValue!=null && objectOtherValue==null) || (!objectValue.equals(objectOtherValue)) ){
return false;
}
}
return true;
}
} catch (Exception e){
System.out.println("[- ERROR -]: 自定义对象比较出错...");
}
return false;
}