3

我在我的一个类中使用 Guava TreeMultiset 来处理需要序列化/反序列化为排序多集的字段。我正在使用自定义比较器来构造 TreeMultiset:

private SortedMultiset<UserFavCatsNode> ms = TreeMultiset.create(new customComparator());

序列化似乎工作正常,但反序列化失败,因为 Jackson 无法访问自定义比较器来构造 TreeMuliset 实例。如何在反序列化时传递比较器实例?

我最初搜索并找到了两个选项:

  1. 实现 Comparable 接口。这行得通,但是对类本身强加自定义排序是不能令人满意的。
  2. 我试图通过基于帖子(http://jackson-users.ning.com/forum/topics/de-serialize-treeset-by-first-defining-a-comparator)编写包装类来解决问题,然后调用这使用 @JsonDeserialize 注释

public Constructor(@JsonDeserialize(as = CustomTreeMultiset.class) field) { // }

这个策略失败了,因为Guava TreeMultiset 是最终的,我无法实现 CustomTreeMultiset 扩展它以提供包装反序列化类。有没有比将自定义排序逻辑注入课程更好的解决方案?

4

0 回答 0