Я уже задал вопрос о JAXB совсем недавно, который можно найти по адресу: How to marshal/unmarshal Java objects with private fields using JAXB.Как связать Java-объекты с помощью JAXB с помощью JAXB
Моя текущая проблема заключается в том, что я пытаюсь маршалировать структуру графа, реализованную с использованием структуры списка смежности.
Vertex Класс:
@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;
Graph Класс:
@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 жалуется на это. Я немного искал Google, но, похоже, не мог финансировать решение для этого.