Java 为什么jaxb会生成这样的代码?

Java 为什么jaxb会生成这样的代码?,java,xml,design-patterns,jaxb,Java,Xml,Design Patterns,Jaxb,为什么jaxb会在下面生成名为Result的类型参数 无法像这样生成getter/setter: protected Result result; public void setResult(Result value) { this.approveRequestResult = (Result value); } public Result getResult() { return resu

为什么jaxb会在下面生成名为
Result
的类型参数

无法像这样生成getter/setter:

  protected Result result;

         public void setResult(Result value) {
            this.approveRequestResult = (Result value);
        }

        public Result getResult() {
            return result;
        }
此文件由JavaTM XML绑定体系结构(JAXB)参考实现生成:

 protected JAXBElement<Result> result;

     public void setResult(JAXBElement<Result> value) {
        this.approveRequestResult = ((JAXBElement<Result> ) value);
    }

    public JAXBElement<Result> getResult() {
        return result;
    }
protectedjaxbelement结果;
公共void setResult(JAXBElement值){
this.approveRequestResult=((JAXBElement)值);
}
公共JAXBElement getResult(){
返回结果;
}

也许这是我不知道的一种设计模式?

当JAXB本身的值不能正确表示XML表示时,它将生成类型为
JAXBElement
的字段/属性。以下是一些案例:

  • 元素既可以为零,也可以为可选。如果该值仅为null,那么它将对应于以下哪种情况(请参阅:)
  • 表示
    xsd:choice
    结构时,其中属性可以对应于相同类型(即
    xsd:string
    )的不同XML元素(即
    foo
    bar
    )。如果值是
    Hello World
    ,您是否将其封送为元素
    foo
    bar
  • Handlng可为零且具有属性的元素(请参见:)

  • 可能是因为结果需要再次通过JAXB序列化rant@JarrodRoberson-这是一个可回答且有用的问题,请参见:@BlaiseDoughan不,这里没有问题,如果问题得到纠正,正如您所指出的,它仍然需要作为副本关闭。@JarrodRoberson-有人问为什么会生成
    JAXBElement
    类型的字段/属性。发生这种情况的原因至少有三个。我已经列举了一些相关链接,但我不会说这是其中任何一个的重复。