JavaOneの会場で耕介さんに会ったので、JAXBへの要望を伝えておきました。
要望というのは、スーパークラスがデフォルトコンストラクタを持っていない場合、サブクラスにデフォルトコンストラクタがあっても、そのサブクラスをJAXBに登録できないのをどうにかしてほしいということ。
class A{ A(int n){ } } class B extends A{ B(){ super(0); } }
というクラスBを登録できないのですね。
そのスーパークラスを触れるときには、アノテーションをつけたりして解決できるということですが、外部ライブラリ内のクラスで触れないときにどうしたらいいかと。
アイデアとしては、XMLで定義ファイルを書けるようにするという話も出たのですが、代理クラスを定義してそのクラスに設定アノテーションを書けばいいかもというアイデアを出してみました。
つまりこんな感じで。
@XmlShadowOf(A.class) @XmlTransient class C{ }