Generics JAXB/JAXWS、泛型和继承

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

当我使用以下类时,我正在创建一个SOAP Web服务:

首先,我有一个抽象类和泛型类:

@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