Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson使用自定义比较器反序列化Guava类_Java_Json_Jackson_Guava_Fasterxml - Fatal编程技术网

Java 使用Jackson使用自定义比较器反序列化Guava类

Java 使用Jackson使用自定义比较器反序列化Guava类,java,json,jackson,guava,fasterxml,Java,Json,Jackson,Guava,Fasterxml,我在我的一个类中使用Guava TreeMultiset来处理需要序列化/反序列化为排序多集的字段。我正在使用自定义比较器来构造TreeMultiset: private SortedMultiset<UserFavCatsNode> ms = TreeMultiset.create(new customComparator()); private SortedMultiset ms=TreeMultiset.create(新建customComparator()); 序列化似乎

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

private SortedMultiset<UserFavCatsNode> ms = TreeMultiset.create(new customComparator());
private SortedMultiset ms=TreeMultiset.create(新建customComparator());
序列化似乎工作正常,但反序列化失败,因为Jackson无法访问自定义比较器来构造TreeMulistet实例。如何在反序列化时传递比较器实例?

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

  • 实现可比较的接口。这是可行的,但对类本身强加自定义排序是不令人满意的
  • 我试图通过基于post()编写一个包装器类,并使用@JsonDeserialize注释调用它来解决这个问题
  • public构造函数(@JsonDeserialize(as=CustomTreeMultiset.class)字段){
    //
    }


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

    不知道Jackson的情况,但一般来说,您几乎不必对任何东西进行子类化。因此,尝试使用您自己的策略转发多集。您找到解决方案了吗?