gpt4 book ai didi

java - JAXB XmlElementRef 查找整个类路径

转载 作者:行者123 更新时间:2023-11-30 04:39:43 25 4
gpt4 key购买 nike

您好,有人可以解释一下如何解决以下问题吗?我有这样的类结构..

 public class RequestWrapper implements Seriallizable
{
private List<Request> requests = null;
@XmlElementRefs( { @XmlElementRef(type = Class1.class), @XmlElementRef(type = Class2.class), .. And so on } )
public List<Request> getRequests()
{
return requests;
}
}

这个Request类是一个抽象类。项目中的许多类扩展了这个 Request 类。因此,我无法通过声明许多 @XmlElementRef 注释来添加代码。

有什么方法可以让这个 @XmlElementRefs 标记查找整个类路径,而不是只查找声明的 @XmlElementRef。

请尽快回复此帖子...

最佳答案

使JAXBContext了解子类

一个JAXB (JSR-222)实现无法通过反射或扫描类路径来确定映射类型的子类。您需要明确告诉 JAXB 将它们包括在内。这可以通过以下方式之一完成。

选项 #1 - @XmlSeeAlso 注释

@XmlSeeAlso 注释是一种机制,您可以在映射的类中利用它来包含其他类。这通常用于拉入 JAXB 应视为映射类的任何子类。

@XmlSeeAlso({Class1.class, Class2.class})
public class Request {
}

选项#2 - 创建JAXBContext时包含它们

JAXBContext jc = JAXBContext.newInstance(Class1.class, Class2.class);
<小时/>

应用@XmlElementRef

只要您的 JAXBContext 知道 Request 的所有子类,那么您就可以将映射简化为以下内容:

@XmlElementRef
public List<Request> getRequests()
{
return requests;
}
<小时/>

了解更多信息

关于java - JAXB XmlElementRef 查找整个类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599399/

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