【发布时间】:2019-01-09 08:14:51
【问题描述】:
我有一个 A 类,有子类 B 和 C。 此外,我在 package-info.java 文件中使用了 XmlJavaTypeAdapters 注释。在其中我为 B 和 C 指定适配器
@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(value = BAdapter.class, type = B.class),
@XmlJavaTypeAdapter(value = CAdapter.class, type = C.class)
})
package xyz;
在要使用 JAXB 序列化的包 xyz 中的一个类中,我正在写这个:
@XmlElementWrapper(name = "entries")
@XmlElements({ @XmlElement(name = "b-entry", type = B.class),
@XmlElement(name = "c-entry", type = C.class) })
private List<A> entries = new ArrayList<>();
这种结构通常在不需要 XML 适配器时总是有效的。但是,现在,JAXB 似乎没有使用为 @XmlElement 类型定义的 XML 适配器。它试图在没有适配器的情况下序列化“b-entry”和“c-entry”,但失败了。
我在包级别还有许多其他 XmlAdapter,除非您将它们与 @XmlElements 一起使用,否则它们都可以工作。
这是 JAXB 的错误还是缺点?我的方法错了吗?
请注意,我必须使用包级别的注释,我不能直接在类中进行注释。
【问题讨论】: