gpt4 book ai didi

java - 替代@XmlSeeAlso

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:09 28 4
gpt4 key购买 nike

abstract Class A{

}


Class B extends A{

}


@XmlRootElement
Class C {
@XmlElement(name = "tobeserialized")
A tobeserialized;
}


Class D{
public void marshal(){
C all = getData();
JAXB.marshal(all, new File("saved.xml");

}

为了让 JAXB 知道类 B 是类 A 的子类,我需要在类 A 上放置一个 @XmlSeeAlso(value = {B.class})。我们有大约 50 个 A 的子类。

但是项目依赖是这样的,A类位于一个不能访问B类的包中。所以我不能把注解放在A类上。

有什么替代方案可以让 JAXB 序列化 A 类的子类?

最佳答案

@XmlSeeAlso映射继承关系时不需要注释,但这是最常使用的时候。 @XmlSeeAlso的作用是告诉 JAXB 为无法通过遍历类推断出的类拉入并生成元数据。

在您的示例中,如果您创建了 JAXBContextC 上类 ( JAXBContext.newInstance(C.class) ) 然后是 A由于 tobeserialized 类也将被处理字段,但是 B不会,因为 Java 中没有找到子类的机制。你可以通过输入 @XmlSeeAlso(B.class) 来解决这个问题在 A或者通过在用于引导 JAXBContext 的类中包含子类:

JAXBContext.newInstance(B.class, C.class);

关于java - 替代@XmlSeeAlso,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935649/

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