0

我有一个定义如下的类:

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

如您所见,这是该类中的一长串属性。

我需要将一个实例的属性值与另一个实例的属性值进行比较。

有没有办法遍历所有这些,或者甚至更好,只是比较两个类并在它们是否具有相同的属性值时得到真/假?

if instance1=instance2 then true

谢谢

4

1 回答 1

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;
}
于 2013-11-27T16:59:11.240 回答