Я пытаюсь развязать что-то вроде ниже в своих эквивалентах JAXB, и поля, как и ожидалось, заполняются нулями
XML
<University>
<StudentFirstNames/>
</University>
JAXB POJO
public class University {
List<StudentFirstNames> studentFirstNames = null;
public void getStudentFirstNames() {
return studentFirstNames
}
public void setStudentFirstNames() {
this.studentFirsNames = studentFirstNames;
}
}
После unmarshalling я вернусь назад, когда я просматриваю элемент в объекте JAXB
university.getStudentFirstNames() --> null
В этой конкретной ситуации, которую я пытаюсь решить, мне нужно заменить пустые теги на новый экземпляр этого конкретного типа. Например, в приведенном выше примере я ожидаю вернуть новый ArrayList() вместо null. Я знаю, что это кажется интуитивным, но это то, что я должен сделать для удовлетворения кода вниз по течению.
Существует ли глобальное решение для разрешения таких экземпляров. Заранее спасибо.
Вы можете инициализировать свое поле следующим образом, чтобы получить желаемое поведение:
List<StudentFirstNames> studentFirstNames = new ArrayList<StudentFirstNames>;
Чтобы иметь возможность различать нулевую и пустую коллекцию, вам нужно будет использовать аннотацию @XmlElementWrapper
.