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

ご覧のとおり、このクラスのプロパティの長いリストです。

インスタンスのプロパティの値を別のインスタンスのプロパティの値と比較する必要があります。

それらすべてを反復処理する方法はありますか、または両方のクラスを比較して、同じプロパティ値を持っているかどうかを true/false にする方法はありますか?

if instance1=instance2 then true

ありがとうございました

4

1 に答える 1

0

私は同じ問題に遭遇し、このメソッドを作成しました。うまくいけば、それはあなたを助けます。リフレクションを使用してパブリック フィールドを反復処理し、JsonIgnore アノテーションを持つものを無視します。このメソッドは、フィールドをリスト、セットなどと見なしていません。フィールドの代わりにプロパティに対して機能するように変更できます。

    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 に答える