Распаковка пустого тега в новые экземпляры коллекций

1

Я пытаюсь развязать что-то вроде ниже в своих эквивалентах 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. Я знаю, что это кажется интуитивным, но это то, что я должен сделать для удовлетворения кода вниз по течению.

Существует ли глобальное решение для разрешения таких экземпляров. Заранее спасибо.

  • 1
    если вы попытаетесь добавить аннотацию: @XmlElementWrapper в свой список, она должна быть представлена как пустая
Теги:
jaxb

1 ответ

2
Лучший ответ

Вы можете инициализировать свое поле следующим образом, чтобы получить желаемое поведение:

List<StudentFirstNames> studentFirstNames = new ArrayList<StudentFirstNames>;

Чтобы иметь возможность различать нулевую и пустую коллекцию, вам нужно будет использовать аннотацию @XmlElementWrapper.

  • 0
    Инициализация исправила это, но все еще не понимает, как это работает! Несмотря на то, что это демаршаллинг, установщик для studentFirstNames не обнуляет его, поскольку он читает пустой тег?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню