gpt4 book ai didi

java - @XmlJavaTypeAdapter 带继承

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:44 26 4
gpt4 key购买 nike

我为异常层次结构中的每个异常定义了一个 XmlJavaTypeAdapter。我使用包装器对象来编码异常,如下所示:-

@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)包装器对象时,默认情况下 JAXB 始终调用 BaseExceptionAdapter,即使实际异常的类型为 DerivedException。如何强制它查找异常的实例类型而不是引用类型。

只是补充一下,package-info/jaxb.in​​dex 等除外。

最佳答案

看起来您的 T 字段需要一个 @XmlElementRef,以告诉 JAXB 动态查找它。

关于java - @XmlJavaTypeAdapter 带继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107548/

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