0

为什么 jaxb 会生成一个名为Resultbelow 的类型参数?

像这样生成getter/setter并不干净:

  protected Result result;

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

        public Result getResult() {
            return result;
        }

该文件由 JavaTM Architecture for XML Binding(JAXB) 参考实现生成:

 protected JAXBElement<Result> result;

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

    public JAXBElement<Result> getResult() {
        return result;
    }

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

4

1 回答 1

1

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

  1. 该元素既可空又可选。如果该值只是 null 它将对应于这些场景中的哪一种(请参阅: JAXB element that is optional and nillable)。
  2. 当表示一个xsd:choice结构时,其中的属性可以对应于相同类型(即 )的不同 XML 元素(即foo和)。如果该值是,您会将其编组为元素还是.barxsd:stringHello Worldfoobar
  3. 处理可空且具有属性的元素(请参阅: 使用 xsi:nil 和 .Net/Jaxb 中的属性创建 XML 元素
于 2013-11-07T16:09:07.163 回答