如何将值设置为类型为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