如何将值设置为类型为List<JAXBElement<? extends SomeClassName>>的类的属性?

public class Claasname{
    protected List<JAXBElement<? extends SomeOtherClassName>> name;
    //getter method for this
}

最佳答案

列表是通用的。

List<Type>


这意味着您可以定义允许哪些元素放入列表中。

例如。

List<String>


将是一个仅包含字符串的列表。

除此之外,您还具有通用的JAXBElements。因此,您可以定义构建此类的Element。

JAXBElement<Type>


然后,您有了扩展操作符:

<? extends SomeClass>


这意味着此JAXBElement对于扩展SomeClass的任何类型(或SomeClass本身)都是通用的。

因此,总的来说,您具有一个可以使用JAXBElements的List,并且可以将这些Elements映射到SomeClass或其任何子类。

例如。允许的是:

JAXBElement<SomeClass> element = ...
name.add(element);
JAXBElement<ChildOfSomeClass> elementChild = ...
name.add(elementChild );


虽然不允许的是:

JAXBElement<ParentOfSomeClass> elementParent = ...
name.add(elementParent); //Compile-error

10-08 16:04