List<JAXBElement<? extends SomeClassName>> 是什么意思?

What does List<JAXBElement<? extends SomeClassName>> mean?

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

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

列表是通用的。

List<Type>

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

例如

List<String> 

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

除此之外,您还有通用的 JAXBElement。所以你可以定义这个 class 是由哪个元素构建的。

JAXBElement<Type>

然后你有扩展运算符:

<? extends SomeClass>

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

所以总的来说,你有一个可以接受 JAXBElements 的列表,这些元素可以映射到 SomeClass 或其任何子classes。

例如允许的是:

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

不允许的是:

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