Если вы не используете MOXy или просто хотите придерживаться стандартных аннотаций JAXB, вы можете расширить ответ Noby, чтобы добавить поддержку универсального класса-оболочки.Ответ Noby в настоящее время поддерживает только список строк, но, например, скажем, вы собираетесь использовать один и тот же универсальный класс-обертку для нескольких разных классов.В моем примере я хочу создать общий класс «PagedList», который будет маршалировать в нечто, похожее на список, но также содержит информацию о смещении страницы и общем количестве элементов в невыгружаемом списке.
Недостатком этого решения является то, что вам нужно добавить дополнительные сопоставления @XmlElement для каждого типа класса, который будет упакован.В целом, хотя, возможно, лучшее решение, чем создание нового класса для каждого элемента pagable.
@XmlType
public class PagedList<T> {
@XmlAttribute
public int offset;
@XmlAttribute
public long total;
@XmlElements({
@XmlElement(name="order", type=Order.class),
@XmlElement(name="address", type=Address.class)
// additional as needed
})
public List<T> items;
}
@XmlRootElement(name="customer-profile")
public class CustomerProfile {
@XmlElement
public PagedList<Order> orders;
@XmlElement
public PagedList<Address> addresses;
}
Анализ этого примера даст вам:
<customer-profile>
<order offset="1" total="100">
<order> ... </order>
<order> ... </order>
<order> ... </order>
...
</orders>
<addresses offset="1" total="5">
<address> ... </address>
<address> ... </address>
<address> ... </address>
<address> ... </address>
<address> ... </address>
<addresses>
</customer-profile>
Надеюсь, что это поможет.Это решение, на котором я остановился, по крайней мере.