我在异常继承体系中为每个异常定义了一个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动态地进行查找。

10-07 15:39