I will use these classes as an example:
@XmlRootElement
class Foo { public Bar bar; }
class Bar {}
class Baz extends Bar {}
class Quux extends Bar {}
Well, there seem to be two possible solutions:
JAXB ( ) .
JAXBContext.newInstance(Foo.class, Bar.class, Baz.class, Quux.class);
JAXB @XmlSeeAlso.
@XmlRootElement
@XmlSeeAlso({Baz.class, Quux.class})
class Foo { public Bar bar; }
Foo f = new Foo();
f.bar = new Baz();
m.marshal(f, System.err);
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<foo>
<bar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="baz"/>
</foo>
, .