gpt4 book ai didi

java - IllegalAnnotationsException SetMultimap 是一个接口(interface),JAXB 无法处理接口(interface)

转载 作者:行者123 更新时间:2023-11-30 05:10:40 24 4
gpt4 key购买 nike

我有以下代码:

private SetMultimap<String, Dynamic> dynamicFields = TreeMultimap.create(Ordering.natural(), new Comparator<Dynamic>() {
@Override
public int compare(Dynamic o1, Dynamic o2) {
return o1.getTitle().compareTo(o2.getTitle());
}
});

这给了我以下异常。

IllegalAnnotationsException SetMultimap is an interface, and JAXB can't handle interfaces

我的问题是,为什么这不起作用,但这个却起作用:

List<Dynamic> test = new ArrayList<Dynamic>();

如何修复 SetMultimap 以使 JAXB 满意?

最佳答案

List/ArrayList 和 SetMultimap 的区别在于,一个是 Java 集合,另一个是普通 Java 集合层次结构之外的数据结构。这意味着 JAXB 认为它是一个普通类。

JAXB 规范不支持接口(interface)。您可能正在使用 Metro JAXB 实现,它也不支持接口(interface)。一些 JAXB 实现,例如 MOXy可以支持接口(interface),但某些 JAX-WS 实现依赖于特定的 JAXB impl,并且替换 JAXB 实现并不总是可能的:

最好的选择是使用参数级别注释将 SetMultimap 转换为可由 JAXB 处理的类:

关于java - IllegalAnnotationsException SetMultimap 是一个接口(interface),JAXB 无法处理接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com