次のクラスのJARxxx-core.jarがあるとします。
@XmlRootElement
@XmlSeeAlso({Imp1.class, Imp2.class})
public abstract class Abst {...}
@XmlRootElement
public class Imp1 extends Abst {...}
@XmlRootElement
public class Imp2 extends Abst {...}
public class Main {
@XmlElement
private Abst abst;
public static void load(File file) {
// unmarshal this
}
public void save(File file) {
// marshal this
}
}
ここまでは順調ですね。Mainはマーシャリングおよび非マーシャリングが可能であり、Abstの正しい実装が使用されます。
ここで、他の誰かがやって来て、xxx-core.jarを使用する別のプロジェクトxxx-extension.jarを作成するとどうなりますが、次のクラスが含まれています。
@XmlRootElement
public class ExtensionImp extends Abst {...}
そして、この新しい実装のインスタンスをMainのメンバー変数に割り当てますか?XmlSeeAlsoアノテーションで明示的に指定されていないため、ExtensionImpが正しくマーシャリング/アンマーシャリングされることを確認するにはどうすればよいですか?(JAXBContext.newInstance()でクラスリストを試してみましたが、それでは問題が解決しないようです。)