У меня есть следующее:
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 во время выполнения?