Существует ли утилита отражения Java, чтобы сделать глубокое сравнение двух объектов?

В зависимости от размера и количества скопированных файлов, Вы могли скопировать целевой каталог по источнику сначала с "да ко всем", тогда сделайте оригинал, который Вы делали, также с "да ко всему" набору. Это должно дать Вам те же результаты.

91
задан naXa 14 March 2017 в 10:40
поделиться

3 ответа

Unitils имеет следующие функции:

Утверждение равенства посредством отражения с различными параметрами, такими как игнорирование значений Java по умолчанию / null и игнорирование порядка коллекций

62
ответ дан 24 November 2019 в 06:49
поделиться

Я использую XStream:

/**
 * @see java.lang.Object#equals(java.lang.Object)
 */
@Override
public boolean equals(Object o) {
    XStream xstream = new XStream();
    String oxml = xstream.toXML(o);
    String myxml = xstream.toXML(this);

    return myxml.equals(oxml);
}

/**
 * @see java.lang.Object#hashCode()
 */
@Override
public int hashCode() {
    XStream xstream = new XStream();
    String myxml = xstream.toXML(this);
    return myxml.hashCode();
}
6
ответ дан 24 November 2019 в 06:49
поделиться

Думаю, вы это знаете, но теоретически вы должны всегда переопределять .equals, чтобы утверждать, что два объекта действительно равны. Это означало бы, что они проверяют переопределенные методы .equals на своих членах.

Именно поэтому .equals определен в Object.

Если бы это было сделано последовательно, у вас не было бы проблем.

0
ответ дан 24 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: