JAXB生成 - 如何在Java代码中强制存在嵌套元素( - >内部类)

时间:2013-02-25 16:30:06

标签: jaxb nested inner-classes lazy-initialization

我正在使用JAXB从我们自己设计的XSD生成域对象。在下面给出的XSD的相关片段中,我在父Job元素中有一个嵌套的preProcessing元素。这将被解析为父PreProcessing类中的Job内部类,如预期的那样。

<xsd:complexType name="Job">
    <xsd:element name="preProcessing" nillable="false">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="mask" type="MaskTypeEnum" />
                <xsd:element name="userDefinedMaskFile" type="xsd:string" />
                <xsd:element name="experimentalDesign" type="xsd:boolean" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>

通过生成的一对get&amp; amp;来访问内部类。在父Job类中设置方法,再次如预期的那样:

public Job.PreProcessing getPreProcessing() {
    return preProcessing;
}
public void setPreProcessing(Job.PreProcessing value) {
    this.preProcessing = value;
}

我希望能够确保在Java代码中,PreProcessing类的实例始终存在Job类的实例。为此,我希望能够将JAXB生成自定义为

1)在PreProcessing类构造函数中实例化Job实例 2)在调用getter方法时懒惰地实例化PreProcessing实例(如列表所示,这很好)

setter方法是多余的(事实上,不应该调用,因为PreProcessing实例是最终的)。

我已经用Google搜索了JAXB +短语,例如延迟实例化,默认值,嵌套元素,并且到目前为止已经绘制了空白。这似乎有些类的定制可以使用自定义XMLAdapters进行,但我的情况是不是真的涉及到编组/解组,它涉及到在我的Java应用程序域对象的操作。

0 个答案:

没有答案