Вам необходимо добавить аннотации, чтобы сообщить JAXB возможные типы ссылок во время выполнения, например:
@XmlElements({
@XmlElement(type = TreeMultimap.class, name = "treeMultimap"),
@XmlElement(type = MultiHashMap.class, name = "hashMultimap")
})
private SetMultimap<String, Dynamic> dynamicFields = TreeMultimap.create(Ordering.natural(), new Comparator<Dynamic>() {
@Override
public int compare(Dynamic o1, Dynamic o2) {
return o1.getTitle().compareTo(o2.getTitle());
}
});
С помощью приведенного выше кода вы также можете заменить поле экземпляром MultiHashMap, если хотите. Вам нужно добавить @XmlElement
для каждого возможного типа времени выполнения. Если вы никогда не будете использовать хэш мультикарты, достаточно одного @XmlElement
с TreeMultimap.class
:
@XmlElement(type = TreeMultimap.class, name = "treeMultimap")
private SetMultimap<String, Dynamic> dynamicFields = TreeMultimap.create(Ordering.natural(), new Comparator<Dynamic>() {
@Override
public int compare(Dynamic o1, Dynamic o2) {
return o1.getTitle().compareTo(o2.getTitle());
}
});