Я хотел бы сравнить обобщенный список c, который определен в абстрактном классе, в объекте, который наследуется от этого класса. Дело в том, что я хотел бы реализовать собственный компаратор для объектов этого списка.
Вот код абстрактного класса:
class A<T extends GenericT, DM extends SomeOtherGeneric>{
private List<T> genericsT = new ArrayList()<>;
private DM otherGeneric;
}
И здесь вы можете найти класс, который я сравниваю явно:
class ExtendsA extends A<ImplementationOfT, ImplementationOfOther>{
}
Я пытаюсь зарегистрировать такие компараторы. :
javers.registerCustomType(ImplementationOfOther.class, new ImplementationOfOtherComparator()); // this one works as expected
javers.registerCustomType(ImplementationOfA.class, new ImplementationOfAComparator()); //this one is not called
Так что, как вы можете видеть, список genericsT не сравнивается так, как мне бы хотелось.
Вот также предупреждение, которое я получаю от javers:
09:40:26.945 [main] WARN org.javers.core.diff.appenders.CorePropertyChangeAppender - Unknown item type in
Set property: Field ListAsSetType:List<T> genericsT , declared in A. Defaulting to Object, see
CorePropertyChangeAppender.GENERIC_TYPE_NOT_PARAMETRIZED
Есть ли возможность добавить пользовательский компаратор для реализации ImplementationOfT
, который будет сравнивать элементы списка genericsT
при сравнении класса ExtendsA
?
EDIT : Похоже, что я могу использовать javers.compareCollections(a.getGenericsT(), b.getGenericsT(), ImplementationOfT.class)
и пометить коллекцию @DiffIgnore
, но затронутый изменением Coo дает мне org.javers.core.graph.LiveGraphFactory$ListWrapper
Можно ли как-то указать свое собственное имя?