当前位置: 首页 > 知识库问答 >
问题:

为什么jaxb生成这样的代码?[关闭]

汪辰阳
2023-03-14

为什么jaxb在下面生成一个名为result的类型参数?

  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;
    }

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

共有1个答案

那正初
2023-03-14

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

  1. 该元素既是可零的,也是可选的。如果该值只是null,那么它将对应于这些场景中的哪一个(请参见:JAXB元素,它既是可选的,也是可选的)。
  2. 表示xsd:choice结构时,属性可以对应于相同类型(例如xsd:string)的不同XML元素(例如foobar)。如果该值是hello world,您是将其封送为元素foo还是bar.
  3. 处理一个可为nill且具有属性的元素(请参见:在.net/jaxb中使用xsi:nil和属性创建XML元素)
 类似资料:
  • 问题内容: 范例1: 输出为: 范例2: 输出: 我只是不明白为什么将saySomething设为非静态会导致第二次调用saySomething调用Cow版本而不是Animal版本。我的理解是, 这两种情况都是输出。 问题答案: 静态方法在编译时绑定到其类,并且不能多态使用。在Animal上声明“静态”方法时,该方法永远绑定到Animal类,并且不能被覆盖。静态方法绑定到Class对象,而不是Cl

  • 我正在看宣传单。 在setTimeout中调用

  • 问题内容: 当我运行此代码时: 我懂了 哪个是正确的,所以我的问题是为什么它将雇员改为雇员?是否可以用大写E代替雇员打印? 这是我真正想要的: 谢谢! 问题答案: 您看到的行为是标准 JAXB(JSR-222) XML名称到Java名称转换算法的结果。 您可以使用注释指定名称: 我是 EclipseLink JAXB(MOXy)的 负责人,并且我们有一个扩展名,它使您可以覆盖您可能感兴趣的默认名称

  • 我想知道为什么下面的代码: 我被要求详细解释,但我不明白为什么输出是这样的。请有人帮帮我。

  • 问题内容: 我使用XJC工具为XSD架构生成Java类。当我使用JAXB Marshaller将类编组为XML有效负载时,我在输出XML中缺少“ schemaLocation”参数,但在xsd文件中声明了此参数。如何在输出XML中强制执行“ schemaLocation”参数? 以下是用于代码生成的xsd模式文件的开头: 问候 问题答案: 试试这个: