对象不同hasChanges不应检测到任何更改

时间:2017-08-09 08:57:21

标签: java

我正在使用java-object-diff来获取JAXB从xml解析的两个对象之间的差异。在下面的示例中,我使用相同的字符串来测试我是否没有差异,但是log.info("has changes: " + diff5.hasChanges());记录true

JAXBContext context1 = JAXBContext.newInstance(Item.class);
Unmarshaller m1 = context1.createUnmarshaller();
Item base = (Item) m1.unmarshal(new StringReader(s));
Item working = (Item) m1.unmarshal(new StringReader(s));
DiffNode diff5 = ObjectDifferBuilder
        .buildDefault()
        .compare(working, base);
log.info("has changes: " + diff5.hasChanges());
diff5.visit((node, visit) -> {
    final Object baseValue = node.canonicalGet(base);
    final Object workingValue = node.canonicalGet(working);
    final String message = node.getPath() + " changed from " +
            baseValue + " to " + workingValue;
    System.out.println(message);
});

我从System.out.println获得的消息始终相同,表示已从null更改为<the actual value>这种情况发生在每个属性中。 E.g。

content changed from null to Mit dem Wasserinonisator

我已经确认两个Items具有相同的内容,并且两者都不是null,而是完全相同的内容。

Item是一个有许多子类的pojo(所有的getter和setter都存在),例如。

public class Item {

@XmlElement(name = "ASIN", required = true)
protected String asin;
@XmlElement(name = "ParentASIN")
protected String parentASIN;
@XmlElement(name = "Errors")
protected Errors errors;
@XmlElement(name = "DetailPageURL")
protected String detailPageURL;
@XmlElement(name = "ItemLinks")
protected ItemLinks itemLinks;
@XmlElement(name = "SalesRank")
protected String salesRank;
@XmlElement(name = "SmallImage")
protected Image smallImage;
}

有没有办法让java-object-diff工作,让它正确地比较值?

0 个答案:

没有答案