Если есть способ, как это сделать, я бы хотел знать самый элегантный. Вот вопрос: - Предположим, у вас есть абстрактный класс Z - У вас есть два класса, унаследованных от Z: с именами A и B.
Вы маршалируете любой экземпляр (A или B) следующим образом:
JAXBContext context = JAXBContext.newInstance(Z.class);
Marshaller m = context.createMarshaller();
m.marshal(jaxbObject, ...an outputstream...);
В полученном XML вы видите, какой это был экземпляр (A или B).
Теперь, как вы демаршалируете
JAXBContext jc = JAXBContext.newInstance(Z.class);
Unmarshaller u = jc.createUnmarshaller();
u.unmarshal(...an inputstream...)
Я получаю UnmarshalException с сообщением
«Описание исключения: дескриптор с корневым элементом по умолчанию {
} <корневой тег, например A или B> не найден в проекте] javax.xml.bind.UnmarshalException "
Итак, как сделать демаршаллинг, чтобы получить экземпляр Z, а затем вы можете протестировать ПОСЛЕ демаршаллинга, что это такое? Например, z instanceof A, затем ... z instanceof B, тогда что-нибудь еще ... и т. Д.
Спасибо за любые идеи или решения.
Я использую JRE1.6 с MOXy как JAXB Impl.