У меня довольно сложное дерево объектов (в основном пытаюсь сериализовать объекты в XML). Объекты могут содержать другие объекты того же или другого типа и т. д.
В любом случае, я аннотировал псевдоним для каждого класса, и до определенной степени он работает хорошо. Когда уровень вложенности превышает 3, псевдонимы перестают работать.
Например, у меня есть
private List<Object> values = new ArrayList<>();
Он содержит объекты с аннотированным псевдонимом. Но они здесь больше не работают, я получаю общее название класса.
Если я аннотирую что-то вроде этого
@XStreamAlias(value = "value-date", impl = ValueDate.class)
private List<Object> values = new ArrayList<>();
это работает, но я не могу использовать аннотацию несколько раз. В идеале я бы сделал следующее:
@XStreamAlias(value = "value-text", impl = ValueText.class)
@XStreamAlias(value = "value-boolean", impl = ValueBoolean.class)
@XStreamAlias(value = "value-date", impl = ValueDate.class)
private List<Object> values = new ArrayList<>();
я бы ожидал что-то вроде
<values>
<value-date>1999-08-31</value-date>
</values>
Но я получаю
<values>
<sql-date>1999-08-31</sql-date>
</values>
Мой класс выглядит так
@XStreamAlias("value-date")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "date" })
public class ValueDate {
private Date date;
Надеюсь, понятно, что я пытаюсь сказать :-)
Я только начал с XStream, потому что JAXB сводил меня с ума ;-)
Спасибо за любую подсказку!