Проектирование класса, циклические ссылки
Столкнулся с проблемой. Есть класс Person имеющий поле типа Person
public class Person {
private long id;
private String name;
private LocalDate dateOfBirth;
private Person spouse;
private List<Person> children;
private Address address;
}
Первая проблема - это при создании объектов компилятор не дает использовать конструктор
Person person01 = new Person(7L, "John Smith", LocalDate.of(1966, 9, 10), person02, children01, address01);
Person person02 = new Person(8L, "Yulia Smith", LocalDate.of(1969, 5, 22), person01, children01, address01);
так как при создании объекта person01 объект person02 еще не существует (и наоборот). Поэтому использую следующую конструкцию:
Person person01 = new Person(7L, "John Smith", LocalDate.of(1966, 9, 10), null, children01, address01);
Person person02 = new Person(8L, "Yulia Smith", LocalDate.of(1969, 5, 22), person01, children01, address01);
person01.setSpouse(person02);
Но тут столкнулся со следующей проблемой: получаю бесконечный цикл при создании объектов. Собственно вопрос, как правильно реализовать такое поведение?
Пример вывода
"id": 7,
"name": "John Smith",
"dateOfBirth": "1966-09-10",
"spouse": {
"id": 8,
"name": "Yulia Smith",
"dateOfBirth": "1969-05-22",
"spouse": {
"id": 7,
"name": "John Smith",
"dateOfBirth": "1966-09-10",
"spouse": {
"id": 8,
"name": "Yulia Smith",
"dateOfBirth": "1969-05-22",
"spouse": {
"id": 7,
"name": "John Smith",
"dateOfBirth": "1966-09-10",
"spouse": {
"id": 8,
"name": "Yulia Smith",
"dateOfBirth": "1969-05-22",
"spouse": {
И так далее