32.3. オブジェクトファクトリー


概要

JAXB は、オブジェクトファクトリーを使用して、JAXB で生成された構造のインスタンスをインスタンス化するためのメカニズムを提供します。オブジェクトファクトリーには、パッケージのスコープで XML スキーマで定義されたすべての設定をインスタンス化するためのメソッドが含まれています。唯一の例外は、列挙型がオブジェクトファクトリーで作成メソッドを取得しないことです。

複合型ファクトリーメソッド

XML スキーマ複合型を実装するために生成された Java クラスごとに、オブジェクトファクトリーにはクラスのインスタンスを作成するためのメソッドが含まれています。このメソッドの形式は次のとおりです。

typeName createtypeName();

たとえば、スキーマに widgetType という名前の複合型が含まれる場合、Apache CXF は WidgetType と呼ばれるクラスを生成して実装します。例32.5「複合型オブジェクトファクトリーエントリー」 は、オブジェクトファクトリーで生成された作成メソッドを示しています。

例32.5 複合型オブジェクトファクトリーエントリー

public class ObjectFactory
{
  ...
  WidgetType createWidgetType()
  {
    return new WidgetType();
  }
  ...
}

要素ファクトリーメソッド

スキーマのグローバルスコープで宣言されている要素の場合、Apache CXF はファクトリーメソッドをオブジェクトファクトリーに挿入します。33章XML 要素の使用 で説明されているように、XML Schema 要素は JAXBElement<T> オブジェクトにマッピングされます。作成方法は次の形式を取ります。

public JAXBElement<elementType> createelementName(elementType value);

たとえば、タイプ xsd:stringcomment という名前の要素がある場合、Apache CXF は 例32.6「要素オブジェクトファクトリーエントリー」 に示されるオブジェクトファクトリーメソッドを生成します。

例32.6 要素オブジェクトファクトリーエントリー

public class ObjectFactory
{
    ...
    @XmlElementDecl(namespace = "...", name = "comment")
    public JAXBElement<String> createComment(String value) {
        return new JAXBElement<String>(_Comment_QNAME, String.class, null, value);
    }
    ...
}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.