我之前创建了一个通用方法,用于使用Javers框架查找差异。然后,我不得不将其更改为Apache Diff。 以下代码是实际代码的简化版本。
public static <E> List<AuditsResource> findDemographicsChanges(List<E> entityAudit) {
List<AuditsResource> results = new ArrayList<>();
for (int i = 0; i < entityAudit.size() - 1; i++) {
DiffResult diff = entityAudit.get(i).diff(entityAudit.get(i+1)); //Not working
List<Diff<?>> d = diff.getDiffs();
final Integer innerI = new Integer(i);
results.addAll(d.stream()
.map(j -> new AuditsResource(j)
.collect(Collectors.toList()));
}
该设计对于Javers框架运行良好,我可以得到如下差异
Javers javers = JaversBuilder.javers().build();
Diff diff = javers.compare(inputArray.get(i), inputArray.get(i + 1));
由于Apache Diff需要一个实体类来实现“ Diffable”并按如下方式覆盖diff函数
@Override
public DiffResult diff(Entity obj) {
}
因此,我无法在第一段代码中调用diff()
DiffResult diff = entityAudit.get(i).diff(entityAudit.get(i+1)); //Not working
因为这需要我在接收通用对象而不是Entity对象的实体内部编写通用函数。
我该如何实现?
答案 0 :(得分:0)
声明您的功能为
public static <E extends Diffable> List<AuditsResource> findDemographicsChanges(List<E> entityAudit)