У меня есть следующее:
class A{
@XmlElement
String name;
//getters and setters
}
и
class B extends A{
@XmlElement
String height;
//getters and setters
}
наконец у меня есть
@XmlRootElement
class P{
@XmlElement
List<A> things;
//getters and setters
}
Если я сделаю
List<A> l = new ArrayList<A>();
l.add(new B('hello', 20)) //Add new B with height of 20 and name hello
P p = new P();
p.setThings(l); //Set things to list of B's.
и маршал P, я получаю поле только как часть вещей, а не высоту.
Я знаю, что могу добавить @XmlSeeAlso (B.class) в A, и все будет работать.
Но проблема в том, что я не знаю всех расширенных классов, кроме B, поскольку A. может быть расширен во время выполнения.
Как динамически определить @XmlSeeAlso во время выполнения?