【发布时间】:2010-10-31 12:33:15
【问题描述】:
我是使用 JAXB 的新手,我使用 JAXB 2.1.3 的 xjc 从我的 XML Schema 生成一组类。除了为我的架构中的每个元素生成一个类之外,它还创建了一个 ObjectFactory 类。
似乎没有什么阻止我直接实例化元素,例如
MyElement element = new MyElement();
而教程似乎更喜欢
MyElement element = new ObjectFactory().createMyElement();
如果我查看 ObjectFactory.java,我会看到:
public MyElement createMyElement() {
return new MyElement();
}
那么有什么关系呢?为什么我还要费心保留 ObjectFactory 类呢?我假设如果我要从更改的架构重新编译它也会被覆盖。
【问题讨论】:
-
我不确定这是否是预期设计,但我发现 ObjectFactory 是用于创建 JAXBContext 的理想类。您需要在那里枚举一些类,JAXB 将遵循它们的方法等,因此它们类似于根。而且 ObjectFactory 具有对所有元素的引用,因此只需使用 ObjectFactory.class 来创建包含所有相关类的 JAXBContext 就足够了。