您正在比较具有如下结构的两个对象(使用Javers 3.9.4): MyClass有一堆字段,其中一些是带有列表的对象。 列表对象确实显示更改,即使它们在对象的两个实例中都相同
Class MyClass{
String s1;
Services services;
}
Class Services{
ServiceS1 serviceS1;
ServiceS2 services2;
}
Class ServiceS1{
String id;
List devicesS1List;
}
Class ServiceS1Devices{
String id;
String name;
Date date;
}
I create objects like this
ServiceS1Devices sd1 = new ServiceS1Devices("1", "d1", 1-2);
ServiceS1Devices sd2 = new ServiceS1Devices("2", "d2", 1-2);
List devicesS1List = new ArrayList<>();
devicesS1List.add(sd1);
devicesS1List.add(sd1);
ServiceS1 serviceS1 = new ServiceS1();
serviceS1.setId("ss1");
serviceS1.setDevicesS1List(devicesS1List);
Services services = new Services();
services.setServiceS1(serviceS1);
.... services.setServiceS2(serviceS2);
MyClass obj1 = new MyClass();
obj1.setS1("1");
obj1.setServices(services);
Create a exactly similar object with only one change like below:
MyClass obj2 = new MyClass();
obj2.setS1("2");
Everything else is same, the Services etc
Then I do a compare
Javers javers = JaversBuilder.javers()
.withListCompareAlgorithm(LEVENSHTEIN_DISTANCE)
.build();
Diff diff = javers.compare(obj1, obj2);
It gives me following output:
changes - ListChange:3 ValueChange:1
值变化1是预期的,为什么它也显示为List也发生了变化(在这种情况下不是预期的)?
谢谢!
答案 0 :(得分:0)
你不应该使用裸List
。从Java 1.6开始就不鼓励了 - JaVers不知道里面是什么以及如何比较它。
始终使用正确参数化的泛型,例如:List<Something>