我有一个名为StringArray
和StringStringArray
的类,它们是从XML-Schema文件生成的。定义如下:
* <complexType name="stringArray">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="item" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* <complexType name="stringArrayArray">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="item" type="{http://jaxb.dev.java.net/array}stringArray" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
课程按以下方式定义(课程由练习课程的教师提供):
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "stringArray", propOrder = {
"item"
})
public class StringArray {
@XmlElement(nillable = true)
protected List<String> item;
public List<String> getItem() {
if (item == null) {
item = new ArrayList<String>();
}
return this.item;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "stringArrayArray", propOrder = {
"item"
})
public class StringArrayArray {
@XmlElement(nillable = true)
protected List<StringArray> item;
public List<StringArray> getItem() {
if (item == null) {
item = new ArrayList<StringArray>();
}
return this.item;
}
}
现在我需要将List<String>
类型的对象添加到StringStringArray
对象。情况如下:
List<List<String>> listOfLists = new ArrayList<List<String>>();
StringArrayArray respond = new StringArrayArray();
ListIterator<List<String>> listIterator = listOfLists.listIterator();
while(listIterator.hasNext()) {
int index = listIterator.nextIndex();
List<String> key = listIterator.next();
respond.getItem().add((StringArray) key); // fails with runtime cast error
}
add
对象的StringStringArray
方法需要StringArray
。我还需要addAll
方法和预期参数Collection<? extends StringArray> arg
。
我该如何解决这个问题?
编辑: 使用转换功能它工作正常,但我不确定这是否是一个好的&#34;溶液
private StringArray convert(List<String> list) {
StringArray array = new StringArray();
for (String string : list) {
array.getItem().add(string);
}
return array;
}
提前致谢,
Meiner。