Мое приложение получает из другого приложения xml формы:
<targetedMessage>
<sender>the sender</sender>
<payload class="other.app.classpath.Foo">
<id>1</id>
</payload>
</targetedMessage>
, где Foo
- это любой из нескольких классов, которые существуют как в моем модуле, так и в другом приложении, и реализует общий интерфейс:
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement
public class Foo implements MyInterface {
private long id;
\\ getters and setters
}
и класс TargetedMessage
:
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement
public class TargetedMessage {
private String sender;
private MyInterface payload;
\\ getters and setters
}
У меня есть enum, который отображает пути классов других приложений к их классам в моем модуле:
public enum MyClasses {
FOO(Foo.class, "other.app.classpath.Foo"),
BAR(Bar.class, "other.app.classpath.Bar"),
\\ ...
}
Используя JAXB, можно ли разархивировать xml так, чтобы полезные данные имели правильный тип (в приведенном выше случае класс полезных данных будет Foo
).