栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JAXB和抽象类

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAXB和抽象类

您可以执行以下操作:

  • @XmlRootElement
    代替抽象类来注释impl 类。
  • 用标记抽象类
    @XmlTransient
    (请参见http://blog.bdoughan.com/2011/06/ignoring-inheritance-with-xmltransient.html)
  • 用于
    @XmlElement(type=BarImpl.class)
    bar
    属性上指定具体类型(请参见http://blog.bdoughan.com/2011/05/jaxb-and-interface-fronted-models.html)。

JAXB测试

import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElements;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlTransient;import org.junit.Test;public class JAXBTest {    @Test    public void test() throws javax.xml.bind.JAXBException {        String xml =  "<foo>" + "  <bar>" + "    <baz>qux</baz>" + "  </bar>" + "</foo>";        javax.xml.bind.JAXBContext context = javax.xml.bind.JAXBContext.newInstance(     FooImpl.class,     BarImpl.class        );        javax.xml.bind.Unmarshaller unmarshaller = context.createUnmarshaller();        unmarshaller.unmarshal(new java.io.StringReader(xml));    }    @XmlTransient    public static abstract class Foo {        @XmlElements({ @XmlElement(name="bar",type=BarImpl.class), @XmlElement(name="bar",type=BarImpl2.class),        })        Bar bar;    }    @XmlTransient    public static abstract class Bar {        @XmlElement(name="baz")        String baz;    }    @XmlRootElement(name="foo")    public static class FooImpl extends Foo { }    @XmlRootElement(name="bar")    public static class BarImpl extends Bar { }    public static class BarImpl2 extends Bar { }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号