32.3. 对象因素

概述

JAXB 使用对象工厂为实例化 JAXB 生成的结构实例提供机制。对象工厂包含在软件包范围内实例化定义的所有 XML 架构结构的方法。唯一的例外是,枚举不是对象工厂中的创建方法。

复杂的类型工厂方法

对于为实现 XML 模式复杂类型生成的每个 Java 类,对象工厂包含一个创建类实例的方法。这个方法采用以下形式:

typeName createtypeName();

例如,如果您的架构包含一个名为 widgetType 的复杂类型,Apache CXF 会生成名为 widget Type 的类来实现它。例 32.5 “复杂的类型对象 Factory Entry” 显示对象工厂中生成的创建方法。

例 32.5. 复杂的类型对象 Factory Entry

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

元素工厂方法

对于在 schema 全局范围中声明的元素,Apache CXF 会将工厂方法插入到对象工厂中。如 第 33 章 使用 XML 元素 所述,XML 架构元素映射到 JAXBElement<T> 对象。创建方法采用以下形式:

public JAXBElement<elementType> createelementName(elementType value);

例如,如果您有一个名为 - sd:string 的名为 comment 的元素,Apache CXF 会生成对象工厂方法,如下所示 例 32.6 “元素对象 Factory Entry”

例 32.6. 元素对象 Factory Entry

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