java – 使用JAXB解组/编组List – 继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用JAXB解组/编组List – 继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2268字,纯文字阅读大概需要4分钟。
内容图文
![java – 使用JAXB解组/编组List – 继承](/upload/InfoBanner/zyjiaocheng/775/ff2b2101c0e54d639b623e0c0ba77c8f.jpg)
我建立了以下案例.所有JAXBLists的接口:
public interface JaxbList<T> {
public abstract List<T> getList();
}
一个基础实现:
@XmlRootElement(name="list")
public class JaxbBaseList<T> implements JaxbList<T>{
protected List<T> list;
public JaxbBaseList(){}
public JaxbBaseList(List<T> list){
this.list=list;
}
@XmlElement(name="item" )
public List<T> getList(){
return list;
}
}
以及URI列表的实现:
@XmlRootElement(name="uris")
public class JaxbUriList2 extends JaxbBaseList<String> {
public JaxbUriList2() { super(); }
public JaxbUriList2(List<String> list){
super(list);
}
@Override
@XmlElement(name="uri")
public List<String> getList() {
return list;
}
}
我正在以下列方式使用List:
public JaxbList<String> init(@QueryParam("amount") int amount){
List<String> entityList = new Vector<String>();
...
enityList.add("http://uri");
...
return new JaxbUriList2(entityList);
}
我认为输出应该是:
<uris>
<uri>
http://uri
</uri>
...
</uris>
但它是这样的:
<uris>
<item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">
http://uri
</item>
...
<uri>
http://uri
</uri>
...
</uris>
我认为它与继承有关,但我不明白……
有什么问题? – 我该如何解决?
提前致谢!
解决方法:
注释通过反射获得.注释绑定到它定义的类型.
public class AnnotationTest {
public static class A
{
@XmlElement(name="item")
public void doIt() { }
}
public static class B extends A
{
@XmlElement(name="name")
public void doIt() { }
}
public static void main(String[] args)
{
B b = new B();
Method m = b.getClass().getMethods()[0];
Annotation[] ann = m.getDeclaredAnnotations();
System.out.println( ann.length ); // prints 1
}
}
所以这种行为不是由于反射机制本身.看起来JAXB框架确实列出了类和超类中方法的注释.令人惊讶的是,这仍然有效,但不是你想要的.
你不能只删除基类中的@XmlElement(name =“item”)吗?
编辑
根据你的评论(但仍不确定我是否理解正确),我建议:
@XmlRootElement(name="list")
public class JaxbBaseList<T> implements JaxbList<T>{
protected List<T> list;
public List<T> getList(){
return list;
}
}
public class JaxbPrimitiveList<T> extends JaxbList<T>{
protected List<T> list;
@XmlElement( name="item" )
public List<T> getList(){
return list;
}
}
@XmlSeeAlso( Uri )
public class JaxbUriList<Uri> extends JaxbList<Uri>{
protected List<Uri> list;
@XmlElement( name="uri" )
public List<Uri> getList(){
return list;
}
}
内容总结
以上是互联网集市为您收集整理的java – 使用JAXB解组/编组List – 继承全部内容,希望文章能够帮你解决java – 使用JAXB解组/编组List – 继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。