Generics JAXB/JAXWS、泛型和继承
当我使用以下类时,我正在创建一个SOAP Web服务: 首先,我有一个抽象类和泛型类:Generics JAXB/JAXWS、泛型和继承,generics,inheritance,jaxb,xsd,jax-ws,Generics,Inheritance,Jaxb,Xsd,Jax Ws,当我使用以下类时,我正在创建一个SOAP Web服务: 首先,我有一个抽象类和泛型类: @XmlTransient @XmlAccessorType(XmlAccessType.FIELD) public abstract class PaginatatedListContainer<T> { @XmlElement protected List<T> elements; ...getter and setter } @xmltransive @XmlAcce
@XmlTransient
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class PaginatatedListContainer<T> {
@XmlElement
protected List<T> elements;
...getter and setter
}
@xmltransive
@XmlAccessorType(XmlAccessType.FIELD)
公共抽象类PaginatadListContainer{
@XmlElement
受保护的列表元素;
…接二连三
}
然后,我有两个类,它们继承传递一个类型作为类参数
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class CollaboratorPaginatedList extends PaginatedListContainer<Collaborator> {
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class GenericUserPaginatedList extends PaginatedListContainer<GenericUser> {
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
公共类CollaboratorPaginatedList扩展了PaginatedListContainer{
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
公共类GenericUserPaginatedList扩展PaginatedListContainer{
}
我的问题是,当我使用wsimport生成WS的客户机时,生成的CollaboratorPaginatedList和GenericUserPaginatedList没有自己的具有正确类型的列表。
我在WSDL/XSD中进行了验证,我看到了一个对象列表,但我不明白为什么
你能帮我理解吗?有没有办法强迫JAXB键入列表
谢谢:)
PS:我试过了
============我的答案因为我是新来的,我不能回答我自己的问题:)
我找到了一个解决办法,但对我来说,它不是很干净。
首先,我在相关部分看到了这个链接
父抽象类:
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class PaginatatedListContainer<T> {
public abstract List<T> getElements();
public abstract void setElements(List<T> elements);
}
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
公共抽象类PaginatadListContainer{
公共抽象列表getElements();
公共抽象元素(列表元素);
}
儿童班:
@XmlType
public class CollaboratorPaginatedList extends PaginatedListContainer<Collaborator> {
@XmlElement
private List<Collaborator> collaborators;
... reimplemented getter/setter
}
@XmlType
public class GenericUserPaginatedList extends PaginatedListContainer<GenericUser> {
@XmlElement
private List<GenericUser> collaborators;
... reimplemented getter/setter
}
@XmlType
公共类CollaboratorPaginatedList扩展了PaginatedListContainer{
@XmlElement
私人名单合作者;
…重新实现的getter/setter
}
@XmlType
公共类GenericUserPaginatedList扩展PaginatedListContainer{
@XmlElement
私人名单合作者;
…重新实现的getter/setter
}
事实上,在XSD/WSDL中,我得到了我想要的东西,是因为类型化列表上的@XmlElement,而不是因为抽象的getter/setter