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:string
的元素,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); } ... }