当前位置: 首页 > 面试题库 >

如何将JAXB类实例作为其超类封送

田兴朝
2023-03-14
问题内容

是否可以将带有JAXB注释的类实例封送 为其超类 (这也是一个具有JAXB注释的类)?

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BenamningTYPE", propOrder = {"benamningId"})
@XmlSeeAlso({MoreDetailedBenamningTYPE.class})
public class BenamningTYPE {
    ...
    @XmlElement(name = "BenamningId", required = true)
    protected IdentifierTYPE benamningId;
    ...
}

和扩展类型:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MoreDetailedBenamningTYPE", propOrder = {"modifyDetails"})
public class MoreDetailedBenamningTYPE extends BenamningTYPE {
    ...
    @XmlElement(name = "ModifyDetails", required = true)
    protected ModifyDetailsTYPE modifyDetails;
    ...
}

因此,如果出现这种情况:

BenamningTYPE b = new MoreDetailedBenamningTYPE();
...

然后我想将 实例 b 作为 BenmaningTYPE封送, 以获取

<BenmaningTYPE>
    ...
</BenmaningTYPE>

而且 不是

<MoreDetailedBenamningTYPE>
    ...
</MoreDetailedBenamningTYPE>

如果可能的话,元帅的调用会是什么样子?


问题答案:

我没有检查过,但我会先尝试:

new JAXBElement(new QName("BenmaningType"),
    BenManingTYPE.class, moreDetailedBenmaningTYPEInstance)

如果要从XML模式生成类,请同时检查copyable插件。您可以将数据从的实例复制MoreDetailedBenamningTYPE到该实例BenmaningTYPE并进行封送处理。

还有更多的可能性,但是它们要复杂一些。



 类似资料:
  • 问题内容: 我所拥有的是一组表示消息类型的Java类(接近25个)。它们都继承自我想抽象的Message类。每种消息类型都会在Message超类提供的集合中添加一些其他字段。 我正在使用RESTeasy实现一些RESTful Web服务,并希望具有以下方法: 而不是使用25种单独的persist方法,每种方法都针对特定的消息类型进行了量身定制。 目前,我已经为Message类添加了如下注释: 然后

  • 问题内容: 考虑这种情况。 有地块,有的是住宅用地,有的是商业用地。 也有所有者。但是所有者只能购买一块土地,并且可以是住宅或商业用地。 所以,这是我的代码。 一切运作良好,但是当我打电话 ,我期待或实例,这样,我可以通过采取适当的操作符。但是它不能同时满足这两个条件! 我究竟做错了什么? 问题答案: 您没有使用多态,它在JPA环境中的危害更大。 观察到此行为的原因是由于Hibernate使用了代

  • 我有一个抽象类A,有两个子类B和C。A看起来像这样: 乙: C: 如何创建 JAXB 上下文: 当我传入符合抽象类A但具有属性B的XML时,我希望JAXB能够将其解组为B类型的对象(如果属性C存在,C也是如此)。目前发生的情况是,它试图将所有XML字符串解组到C语言,并且只解组到C语言,这导致了一个ClassCastException。 我尝试在根节点上将子类指定为类型——例如: 但这并不能解决问

  • 问题内容: 我正在创建一个类及其子类,需要在其中调用父级的静态方法以返回子级实例。 问题答案: 该静态方法被调用,其值是类对象,子类,你把它称为后的构造。因此,您可以使用实例化它:

  • 问题内容: 我有一个SOAPMessage对象。我想解析并将其转换为一组Jaxb类。我如何将消息转换为Jaxb可以解组的格式? javax.xml.bind.Unmarshaller.unmarshal(??) 问题答案: SOAP消息的主体包含实际数据及其要解组的位。您可以执行以下操作:

  • 假设我有以下代码 然而,现在我希望能够将一个超类对象传递给子类构造函数。我该怎么做? 基本上,我想这样做。。。 但是如果超类更复杂,我不想在super()调用中添加每个值。相反,我只想传入一个已经存在的对象,并将其用作超类。 我想这么做。。。 但我不确定这是否被允许? 如果我在超类定义中添加一个构造函数,似乎我可以完成上面的工作。但那会是什么样子呢?