Я пытаюсь использовать JAXB для извлечения некоторых элементов из большого XML-файла (технически это XTCE .)
JAXB создал коллекцию объектов для меня.Чтобы получить подмножество желаемых элементов, мне нужно позвонить:
List<SequenceEntryType> org.omg.space.xtce.EntryListType.getParameterRefEntryOrParameterSegmentRefEntryOrContainerRefEntry();
Я хотел бы заполнить
ArrayList<ParameterRefEntryType> integerParameters;
возвращаемым значением, используя следующий код:
integerParameters.addAll(...); // calling long JAXB-generated function above
ParameterRefEntryType является производным от SequenceEntryType , так что это должно быть кошерным, пока я использовал соответствующее приведение.
Однако Eclipse сообщает:
"Метод addAll (Collection <? Extends ParameterRefEntryType>) в типе ArrayList не применим к аргументам (ParameterRefEntryType)."
Я ржавый в универсальных коллекциях Java, и яне до конца понимаю, что здесь происходит.Кажется, мне нужно переопределить свой ArrayList, чтобы принимать только элементы типа ParameterRefEntryType.Могу ли я использовать addAll (), как это, или мне нужно написать свой собственный цикл для добавления нужных элементов?
Альтернатива выглядит так:
List<SequenceEntryType> entries =
entryList.getParameterRefEntryOrParameterSegmentRefEntryOrContainerRefEntry();
Iterator<SequenceEntryType> entryIterator = entries.iterator();
while (entryIterator.hasNext()) {
SequenceEntryType currEntry = entryIterator.next();
if (currEntry instanceof ParameterRefEntryType) {
_integers.add(currEntry);
}
}
Если этот метод необходимЯ определенно рассмотрю вопрос об использовании lambdaj .