gpt4 book ai didi

java - 使用 Javers 比较包含 map 的对象

转载 作者:行者123 更新时间:2023-12-02 13:20:45 25 4
gpt4 key购买 nike

当我真的想轻松比较两个对象时,我找到了一个名为 Javers 的库。这在大多数情况下都做得很好,例如比较对象中的值变化,并且也适用于列表。但是,如果有两个包含 map 的对象,那么如何捕获更改?例如,我有一个带有 map 的以下类(class),

public class Test {
private Map<String,Object> map = new HashMap();
//some others fields
//getters and setters
}

现在,如果我有具有以下值的对象:

Test test1 = new Test();
Map<String,Object> map1 = new HashMap();
map1.put("one",1);
map1.put("two",2);
test1.setMap(map1);
Test test2 = new Test();
Map<String,Object> map2 = new HashMap();
map2.put("one",2);
map2.put("two",1);
test2.setMap(map2);
Javers javers = JaversBuilder.javers().build();
javers.compare(test1,test2);//?

这并没有给我在 map 中所做的更改。我将如何捕获它?

最佳答案

要捕获更改,您需要处理由比较方法返回的 diff 对象。例如,仅打印更改:

Diff diff = javers.compare(test1,test2);
diff.getChanges().forEach(change -> System.out.println(change.toString()));

更多信息可以在javers的文档中找到: http://javers.org/documentation/diff-examples/

在 javadoc 中: http://javers.org/javadoc_3.x/org/javers/core/diff/Diff.html

关于java - 使用 Javers 比较包含 map 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43580716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com