Я построил следующий случай. Интерфейс для всех 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;
}
}
И я использую Список следующим образом:
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>
Я думаю, что это как-то связано с наследованием, но я не понимаю ...
В чем проблема? - Как я могу это исправить?
Заранее спасибо!