JaxB маршаллинг с использованием интерфейсов
У меня есть следующий класс, я хочу иметь возможность создавать XML динамически на основе интерфейса, с изменением реализаций ... это возможно ... я пытался с небольшой удачей ...
@xmlRootElement
public class Vehicles {
private String id;
private List<VehicleType> types;
.... various setters and getters...
... with annotated getters...
}
public interface VehicleType {
public String getName();
}
public Car implements VehicleType {
private String name;
private String wheels;
...various constructors...
@XmlElement
public String getName() {
return name;
}
@XmlElement
public String getWheels() {
return wheels;
}
}
public Motorbike implements VehicleType {
private String name;
private String exhaust;
...various constructors...
@XmlElement
public String getName() {
return name;
}
@XmlElement
public String getExhaust() {
return exhaust;
}
}
Я хочу, чтобы сортировка транспортных средств производила следующий вывод:
<vehicles>
<types>
<car>
..car specific elements
</car>
<motorbike>
.. mototrbike specific elements
<motorbike>
</types>
</vehicles>
Класс транспортных средств не может знать о реализациях или о том, какие из них существуют ... он знает только об интерфейсе, который я действительно использую в качестве интерфейса маркера ... чтобы я мог заполнить список различными реализациями во время выполнения ...
Есть ли в любом случае я могу получить jaxb, чтобы сделать вывод в виде XML без родителя, действительно зная о реализации?