Ho la seguente:@XmlSeeAlso alternativa
class A{
@XmlElement
String name;
//getters and setters
}
e
class B extends A{
@XmlElement
String height;
//getters and setters
}
finalmente ho
@XmlRootElement
class P{
@XmlElement
List<A> things;
//getters and setters
}
Se faccio
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.
e maresciallo P, ottengo solo il campo come parte delle cose e non come altezza.
So che posso aggiungere @XmlSeeAlso (B.class) in A e funzionerà tutto.
Ma il problema è che non conosco tutte le classi estese oltre a B, poiché A può essere esteso in runtime.
Come definire dinamicamente @XmlSeeAlso in runtime?
Grazie per la risposta. newInstance è chiamato nello stesso progetto di dove sono definiti A e P (è un progetto comune di maven). Il progetto di Classe B dipende da quel progetto, e quindi newInstance non ha conoscenza della classe B. Immagino che sia impossibile farlo in JAXB? –
@Ken Hirakawa: questa è davvero una situazione complicata, ho ampliato la mia risposta con una possibile soluzione. –