Совсем недавно я уже задавал вопрос о JAXB, который можно найти по адресу: Как маршалировать/демаршалировать объекты Java с закрытыми полями с помощью JAXB.
Моя текущая проблема заключается в том, что я пытаюсь маршалировать структуру графа, реализованную с использованием структуры списка смежности.
Класс вершин:
@XmlElement
private int index;
@XmlElementWrapper(name="adj_list")
@XmlElement(name="vertex")
private ArrayList<Vertex> adjList;
Класс края:
@XmlElement(name="vertex")
private Vertex v1;
@XmlElement(name="vertex")
private Vertex v2;
@XmlElement
private String label;
Класс графика:
@XmlElementWrapper(name="vertices")
@XmlElement(name="vertex")
private ArrayList<Vertex> vertices;
@XmlElementWrapper(name="edges")
@XmlElement(name="edge")
private ArrayList<Edge> edges;
Когда я заполняю экземпляр графа и пытаюсь его маршалировать, я получаю исключение, в частности javax.xml.bind.MarshalException.
Насколько я понимаю, эта проблема связана с тем, что класс Vertex хранит Vertex ArrayList, который является потенциальным циклом, поэтому JAXB жалуется на это. Я немного погуглил, но не могу найти решение для этого.