tengo el siguiente:@XmlSeeAlso alternativa
class A{
@XmlElement
String name;
//getters and setters
}
y
class B extends A{
@XmlElement
String height;
//getters and setters
}
fin he
@XmlRootElement
class P{
@XmlElement
List<A> things;
//getters and setters
}
Si hago
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.
y mariscal P, solo obtengo el campo como parte de las cosas y no como altura.
Sé que puedo agregar @XmlSeeAlso (B.class) en A y todo funcionará.
Pero el problema es que no conozco todas las clases ampliadas además de B, ya que A puede extenderse en tiempo de ejecución.
¿Cómo defino dinámicamente @XmlSeeAlso en tiempo de ejecución?
Gracias por la respuesta. newInstance se llama en el mismo proyecto donde se definen A y P (es un proyecto de maven común). El proyecto de la Clase B depende de ese proyecto, por lo que newInstance no tiene conocimiento de la clase B. Supongo que esto es imposible de hacer en JAXB? –
@Ken Hirakawa: De hecho, es una situación difícil, he ampliado mi respuesta con una posible solución. –