Javers - 比较值为空的 ValueObjects 和具有空列表的对象
Javers - Comparison ValueObjects which are null and object with empty list
我有这样的class:
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class ValueObjectList {
private List<DummyClass> dummyClassList;
}
并且在 class 的主要方法 2 对象中:
ValueObjectList valueObjectList1 = ValueObjectList.builder()
.dummyClassList(new ArrayList<>())
.build();
ValueObjectList valueObjectList2 = null;
我想比较 Javers 的此类对象。将 javers 的这些对象视为相同对象的最佳方法是什么?我是否必须为这种情况创建自己的比较器?也许我可以在 JaversBuilder 中设置这样的配置?
您可以使用自定义类型和 CustomPropertyComparator
。请参阅 CustomType
:
的 javadoc
自定义类型不好管理,不得已才用,
仅适用于比较自定义集合类型等极端情况。
JaVers 将自定义类型视为黑盒
并且不对其内容或行为做出任何假设。
它是一种“未建模”类型,有点类似于无限通配符 <?>
自定义类型的对象按 CustomPropertyComparator
进行比较。
注册此比较器是映射自定义类型的唯一方法。
使用 Gson 默认值将自定义类型序列化为 JSON。
见JaversBuilder#registerCustomType(Class, CustomPropertyComparator)
我有这样的class:
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class ValueObjectList {
private List<DummyClass> dummyClassList;
}
并且在 class 的主要方法 2 对象中:
ValueObjectList valueObjectList1 = ValueObjectList.builder()
.dummyClassList(new ArrayList<>())
.build();
ValueObjectList valueObjectList2 = null;
我想比较 Javers 的此类对象。将 javers 的这些对象视为相同对象的最佳方法是什么?我是否必须为这种情况创建自己的比较器?也许我可以在 JaversBuilder 中设置这样的配置?
您可以使用自定义类型和 CustomPropertyComparator
。请参阅 CustomType
:
自定义类型不好管理,不得已才用, 仅适用于比较自定义集合类型等极端情况。
JaVers 将自定义类型视为黑盒
并且不对其内容或行为做出任何假设。
它是一种“未建模”类型,有点类似于无限通配符 <?>
自定义类型的对象按 CustomPropertyComparator
进行比较。
注册此比较器是映射自定义类型的唯一方法。
使用 Gson 默认值将自定义类型序列化为 JSON。
见JaversBuilder#registerCustomType(Class, CustomPropertyComparator)