我在异常继承体系中为每个异常定义了一个XmlJavaTypeAdapter
。我使用包装器对象编码(marshal)异常,如下所示:
@XmlRootElement
public Wrapper<T extends BaseException> {
T exception;
}
异常(exception)情况:-
@XmlJavaTypeAdapter(BaseExceptionAdapter.class) {
public class BaseException extends RuntimeException {
}
@XmlJavaTypeAdapter(DerivedExceptionAdapter.class) {
public class DerivedException extends BaseException {
}
当我尝试编码(marshal)包装对象时,默认情况下,即使实际的异常类型为
BaseExceptionAdapter
,JAXB也会始终调用DerivedException
。我如何强制它寻找异常的实例类型而不是引用类型。仅添加,
package-info
/jaxb.index
等除外。 最佳答案
看起来您的T字段上需要一个@XmlElementRef,以告诉JAXB动态地进行查找。