Я пытаюсь упорядочить объект, который имеет Объект как одно из его полей.
@XmlRootElement
public class TaskInstance implements Serializable {
...
private Object dataObject;
...
}
dataObject может быть одним из многих различных неизвестных типов, таким образом определив, что каждый где-нибудь не только непрактичен, но и невозможен. Когда я пытаюсь упорядочить объект, он говорит, что класс не известен контексту.
MockProcessData mpd = new MockProcessData();
TaskInstance ti = new TaskInstance();
ti.setDataObject(mpd);
String ti_m = JAXBMarshall.marshall(ti);
"MockProcessData, ни любой его суперкласс известны этому контексту". то, что я получаю.
Есть ли какой-либо путь вокруг этой ошибки?
JAXB не может маршалировать какой-либо старый объект, поскольку не знает, как это сделать. Например, он не будет знать, какое имя элемента использовать.
Если вам нужно обработать такого рода подстановочные знаки, единственное решение - обернуть объекты в объект JAXBElement
, который содержит достаточно информации для JAXB для маршалинга в XML.
Попробуйте что-нибудь вроде:
QName elementName = new QName(...); // supply element name here
JAXBElement jaxbElement = new JAXBElement(elementName, mpd.getClass(), mpd);
ti.setDataObject(jaxbElement);