下位互換性だけが理由ではありません。:-P
要素の内容がとることができる値に複雑な制約があるスキーマなど、より複雑なスキーマでは、実際のJAXBElement
オブジェクトを作成する必要がある場合があります。それらは通常手作業で作成するのは簡単ではないので、create*
メソッドはあなたのためにハードワークを行います。例(XHTML 1.1スキーマから):
@XmlElementDecl(namespace = "http://www.w3.org/1999/xhtml", name = "style", scope = XhtmlHeadType.class)
public JAXBElement<XhtmlStyleType> createXhtmlHeadTypeStyle(XhtmlStyleType value) {
return new JAXBElement<XhtmlStyleType>(_XhtmlHeadTypeStyle_QNAME, XhtmlStyleType.class, XhtmlHeadType.class, value);
}
これは、<style>
タグをタグに取得する方法です<head>
。
ObjectFactory factory = new ObjectFactory();
XhtmlHtmlType html = factory.createXhtmlHtmlType();
XhtmlHeadType head = factory.createXhtmlHeadType();
html.setHead(head);
XhtmlStyleType style = factory.createXhtmlStyleType();
head.getContent().add(factory.createXhtmlHeadTypeStyle(style));
の最初の3つの使用法はObjectFactory
不必要と見なすことができますが(一貫性には役立ちます)、4番目の使用法はJAXBをはるかに使いやすくします。イメージングはnew JAXBElement
毎回手書きで書かなければならない!