我的课程定义如下:
Public Class DeviceConfig
Private _maxNumCodesGlobal As Integer
Private _maxNumCodesDataMatrix As Integer
Private _maxNumCodesQR As Integer
Private _maxNumCodesBarcode As Integer
Private _partialResults As String
Private _allowIdenticalSymbols As String
Private _datamatrixValidation As Integer
Private _datamatrixValidationType
'AND MUCH MORE PROPERTIES
'GETTERS & SETTERS
End Class
你可以看到这是一个很长的属性列表。
我需要将实例中属性的值与另一个实例的属性值进行比较。
有没有办法迭代所有这些,甚至更好,只是比较两个类,如果它们具有相同的属性值,则获得true / false?
if instance1=instance2 then true
谢谢
答案 0 :(得分:0)
我遇到了同样的问题并创建了这个方法。希望它会对你有所帮助。 它使用反射来遍历公共字段,忽略具有JsonIgnore注释的那些字段。 此方法不将字段视为List,Set等。 您可以将其更改为适用于属性而不是字段。
protected <T> boolean equals(T object1, T object2) {
Field[] fields = object1.getClass().getFields();
for (Field field : fields) {
if (field.getAnnotation(JsonIgnore.class)!= null) continue; //do not check the fields with JsonIgnore
Object value1;
Object value2;
try {
value1 = field.get(object1);
value2 = field.get(object2);
} catch (Exception e) {
logger.error("Error comparing objects. Exception: " + e.getMessage());
return false;
}
//comparing
if (value1 == null) {
if (value2 != null)
return false;
} else if (!value1.equals(value2))
return false;
}
return true;
}